- •Распределенные базы данных.
- •Назначение, основные характеристики и компоненты клиент/серверных систем.
- •Преимущества клиент/серверных систем
- •Возможности ms sql .
- •Характеристики языка Transact-sql
- •Переменные,типы переменных в Transact-sql.
- •Типы переменных
- •Команда if…else Пример программы.
- •Команды delet, insert, update. Примеры программы. Синтаксис оператора insert
- •Синтаксис
- •Понятие хранимой процедуры. Пример программ.
- •Понятие транзакции. Пример программы.
- •Понятие триггера. Пример программ.
- •Объектно-ориентированное программирование в рнр-5.
- •Реализация наследования в php5.
- •Создание классов, атрибутов и операций в php-5.
- •Константы в классах
- •Статические атрибуты и методы
- •Создание экземпляра класса в рнр5.
- •Конструкторы и деструкторы в php-5. Вызов операций класса.
- •Классы в php-5 для работы с базами данных и их методы.Ответ в вопросе 14 и в 18.
- •Связь php с базой данных MySql
Понятие хранимой процедуры. Пример программ.
Хранимая процедура:
- программа, написанная на языке СУБД, скомпилируемая на машинный язык и сохраненная для многократного и более эффективного выполнения.
- программа на языке определения/манипулирования данными и выполняется с сервером процедуры обработки данных. Хранятся в СУБД.
Хранятся в самой СУБД. Они могут реализовать логику, плохо укладывающуюся в рамках языка запроса. Наряду с возможностью передачи хранимой процедуры переменной существует возможность извлечения знания из хранимой переменной.
Перед выполнением процедуры, SQL-сервер генерирует для нее план исполнения, оптимизирует и компилирует ее. Этот процесс выполняется при первом запуске процедуры. Далее компилируется код, сохраняется в памяти.
Преимущества:
- используется для модульностной организации программного кода для выполнения сложных манипуляций с БД.
Отличие хранимой процедуры от представления: хран. процедура можно передать параметр, а в представлении – нет.
Пример1. Показать номера поставщиков.
CREATE PROCEDURE SupPurt
AS
SELECT s# from S
Exec SupPurt
Пример 2.
Create Procedure SupStart
As
Declare @ Rstatus Int
Set @ Rstatus = 20
Select S from tbls
Where status>@Rstatus
Exec SupStart
Пример 3.Номера и имена поставщиков статус которых превышает указанную величину.
Create procedure Sup_S@Rstatus INT
As
Select SName , S=From S
Where status> @ Rstatus
Exec Sup_S20
Объявить можно:
Declare @ Zstatus Int
Set @ Zstatus=20
Exec Sup_s@ Zstatus
Пример 4. Оператор IN проверяет нахождение значения Sname в заданном списке значений.
Create procedure nameCity@ city as
As
Select * from S where Snamt in(‘jones’,’black’)
AnCity = @ city
Exec nameCity ‘Paris’
Пример 5. Определить № поставщика поставляемого детали с определенным номером.
Create procedure
Number @ name char(30)
As
Select Sname from S,SP where S, S #=SPS#
And SP.P#=@Name
Exec Post ‘P2’
Пример 6. Добавить в таблицу S запись поставщика с номером S2.
Create procedure Add_Sup @ Rs char (6),
@ RSname char(9), @ Rstatus integer,
@ seity char(8),
If Exist (select from S where s=@RS and Sname=@RSName
Print’ Пост с таким именем уже существует’
Else begin insert into Svalues(@Rs,@RsName,@Rstatus,@RCity)
End
Exec ADD_Sup ‘S5’,’Smith’,’40’,’london’
Пример 7. Подсчитать среднее арифметическое поставок укзанных поставщиков.
Create procedure Sup_Avg@AvgPost.INT autput @ Numpost chat(10)
AS
Select @ AvgPost = AVG(qty)
From SP
Where s#=@NumPost
Понятие транзакции. Пример программы.
Транзакция – это логическая единица работы, чаще всего состоящая из нескольких операций, последовательное выполнение которых переводит базу данных из одного непротиворечивого состояния в другое. СУБД рассматривает транзакцию, как неделимую группу команд и исполняет либо все команды, либо ни одной.
Транзакция – это действие или серия действий, выполняемых одним пользователем или прикладной программой, которые осуществляют доступ или изменение содержимого БД.
/*Возможно несколько действий, причем как изменяющих, так и читающих данные. */
Транзакция является логической единицей работы, выполняемой в БД. Она может быть представлена отдельной программой, являться частью алгоритма программы или даже отдельной командой (например, insert, update).
/*Например, изменение заработной платы сотруднику с некоторым табельным номером. Пользователь выполняет операцию
update сотрудник set з.п. = з.п.*1.1 where табельный номер = 23
Транзакция же будет состоять из чтения указанного элемента данных (поля з.п. некоторого кортежа), получения нового значения и записи указанного элемента, то есть из трех операций */
С точки зрения БД, выполнение программы некоторого приложения может расцениваться как серия транзакций, в промежутках между которыми выполняется некоторая обработка данных, осуществляемая вне среды БД.
Например, весь процесс пересмотра зарплаты сотрудникам организации. Выполняется транзакция, извлекающая список сотрудников с их зарплатой. После этого выполняется некоторая обработка данных по удобному представлению их пользователю, возможно он их будет переупорядочивать различным образом, увеличивать или уменьшать шрифт представления – это все будет обработка вне БД, если конечно программа не написана так, что при переупорядочивание данные не считываются заново, то есть если эта функция не решена средствами SQL. За тем может идти произвольное чисто простых транзакций, описанных ранее. Если не табельный номер, а суррогат, то обработка вне БД может заключаться в написании правильного запроса, так как пользователь не видит суррогаты, но они считываются и где-то размещаются в программе.
Любая транзакция всегда должна переводить БД из одного согласованного состояния в другое согласованное, хотя допускается, что согласованность БД будет нарушаться в ходе выполнения транзакции.
/* Пусть студент отучился на специальности некоторое время и получил оценки согласно плану этой специальности. При переводе его на другую специальность транзакция будет состоять из следующих действий: найти предметы, которые должен был изучить студент согласно плану новой специальности; для каждого этого предмета найти оценку у переводимого студента и перезачесть ее; все остальные оценки удалить. То есть и до и после выполнения транзакции БД находится в согласованном состоянии: все студенты имеют оценки согласно плану обучения по специальности, но в ходе выполнения часть оценок студента не относятся к специальности, на которой он обучается. Пример демонстрирует и сложность транзакции, и согласованность БД, и нарушение согласованности в ходе выполнения транзакции.*/
Любая транзакция завершается одним из двух возможных способов. В случае успешного завершения результаты транзакции фиксируются (commit), и БД переходит в новое согласованное состояние. Если выполнение транзакции не увенчалось успехом, она отменяется. В этом случае в БД должно быть восстановлено то согласованное состояние, в котором она находилась до начала данной транзакции. Этот процесс называется откатом (roll back) транзакции. Зафиксированная транзакция не может быть отменена. Если зафиксированная транзакция была ошибочной, то необходимо выполнить другую транзакцию, возвращающую БД в предыдущее согласованное состояние.
В большинстве языков манипулирования данными для указания границ отдельных транзакций используются операторы begin transaction, commit, rollback.
Существуют свойства, которыми должна обладать транзакция. Они называются ACID:
Атомарность («все или ничего» atomic). Любая транзакция представляет собой неделимую единицу работы, которая может быть либо выполнена вся целиком, либо не выполнена вовсе.
Согласованность (coordination). Каждая транзакция должна переводить БД из одного согласованного состояния в другое.
Изолированность (insulativity). Все транзакции выполняются независимо одна от другой. Другими словами, промежуточные результаты незавершенной транзакции не должны быть доступны другим транзакциям.
Продолжительность (duration). Результаты успешно завершенной транзакции должны сохраняться в БД постоянно и не должны быть утеряны в результате последующих сбоев.
Пример.
BEGIN TRANSACTION;
DELETE FROM tblSP;
WHERE S = ‘S3’;
DELETE FROM tblS
WHERE S = ‘S3’;
COMMIT
1 – начало транзакции
2,3 – удаление записи из таблицы tbl SP
4,5 – удаление записи из таблицы tbl S
6 – проверка корректности базы данных и, если ДА, то оператор СОММIT фиксирует все изменения в базе данных (фиксирует транзакцию). Все изменения будут успешно внесены в базу данных.
С помощью транзакций можно провести несколько изменений в базе данных, а затем в зависимости от объективных условий принять или отменить внесенные изменения.