- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Таблица A
- •Таблица A
- •Таблица A
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Элементы языка SQL
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Физическое проектирование БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •Технологии построения информационных систем – приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
- •: Проектирование приложений БД
Элементы языка SQL
Работа с просмотрами (VIEW)
Дополнительные параметры просмотра
1) Указание имен столбцов просмотра. Имена столбцов просмотра должны указываться, когда в качестве столбца определяется выражение:
CREATE VIEW STOIM_RASH (DAT_RASH, TOVAR, STOIM) AS SELECT R.DAT, R.TOVAR, R.KOLVO*T.ZENA
FROM RASHOD R, TOVARY T
WHERE R.TOVAR = T.TOVAR
2) Использование CHECK OPTION. Если указан CHECK OPTION, то будут отвергаться все попытки добавления новых или изменения существующих записей таким образом, чтобы нарушалось условие WHERE оператора SELECТ.
CREATE VIEW RASH_1000_CHECK AS SELECT * FROM RASHOD
WHERE KOLVO > 1000
WITH CHECK OPTRION
Нельзя добавить записи со значением поля KOLVO, меньшим 1000
Элементы языка SQL
Работа с хранимыми процедурами
Понятие хранимой процедуры
Хранимая процедура – это модуль, написанный на процедурном языке и хранящийся в БД как метаданные (т.е. данные о данных).
Существует два вида хранимых процедур:
•процедуры выбора - могут возвращать более одного значения. В приложении имя ХП выбора подставляется в оператор SELECT вместо имени таблицы или просмотра;
•процедуры действия – вообще могут не возвращать данных и используются для реализации каких-либо действий .
Преимущества использования ХП:
1)одну процедуру можно использовать многими приложениями;
2)разгрузка приложения клиента путем переноса части кода на сервер и вследствие этого – упрощение клиентских приложений;
3)при изменении ХП все изменения немедленно становятся доступными для всех клиентских приложений;
4)улучшенные характеристики выполнения, связанные с тем, что ХП выполняются сервером, в частности – уменьшенный сетевой трафик.
Элементы языка SQL
Работа с хранимыми процедурами
Создание хранимой процедуры
Хранимая процедура создается оператором:
CREATE PROCEDURE ИмяПроцедур
[ ( входной_параметр тип_данных [, входной_параметр тип_данных … ] ) ] [ RETURNS
( выходной_параметр тип_данных [ , выходной_параметр тип_данных … ] ) ] AS
[< объявление локальных переменных процедуры>] BEGIN
< оператор > [ < оператор > … ]
END ;
Элементы языка SQL
Работа с хранимыми процедурами
Создание хранимой процедуры
Пример:
CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR(20)) RETURNS (MAX_KOLVO INTEGER)
AS BEGIN
SELECT MAX(KOLVO) FROM RASHOD
WHERE TOVAR = :IN_TOVAR INTO :MAX_KOLVO; SUSPEND;
END ;
Элементы языка SQL
Работа с хранимыми процедурами
Алгоритмический язык хранимых процедур
Формат объявления локальных переменных:
DECLARE VARIABLE <имя переменной> < тип данных > ;
Пример:
CREATE PROCEDURE FULL_ADR (TOVAR VARCHAR(20) ) RETURNS GOROD_ADRES VARCHAR(40)) AS
DECLARE VARIABLE NAIDEN_POKUPATEL VARCHAR(20); DECLARE VARIABLE MAX_KOLVO INTEGER;
BEGIN ….
END ;
Элементы языка SQL
Работа с хранимыми процедурами
Алгоритмический язык хранимых процедур
Операторные скобки :
Используются для указания границ составного оператора
BEGIN
...
END ;
Оператор присваивания:
Имя_переменной = выражение ;
OUT_TOVAR = UPPER(TOVAR);
Оператор условия :
IF ( < условие> ) THEN < оператор 1>
[ELSE
< оператор 2 > ]:
Элементы языка SQL
Работа с хранимыми процедурами
Оператор SELECT
Оператор SELECT используется в ХП для выдачи единичной строки. К обычному формату SELECT в процедурный оператор добавлено предложение:
INTO :переменная [, переменная … ]
Пример:
…
SELECT AVG(KOLVO), SUM(KOLVO) FROM RASHOD
WHERE TOVAR = :IN_TOVAR INTO :AVG_KOLVO, :SUM_KOLVO;
…
Элементы языка SQL
Работа с хранимыми процедурами
Оператор FOR SELECT … DO
FOR
<оператор SELECT > DO
<оператор > ;
Оператор SELECT используется в ХП в расширенном синтаксисе с INTO. Для каждой строки полученного результирующего НД выполняется оператор, следующий за словом DO. Этим оператором часто бывает SUSPEND, который приводит к возврату выходных параметров в вызывающее приложение.
Пример:
CREATE PROCEDURE RASHOD_TOVARA (IN_TOVAR VARCHAR(20) ) RETURNS (OUT_DAT DATE, OUT_POKUP VARCHAR(20), OUT_KOLVO INTEGER) AS
BEGIN
FOR SELECT DAT_RASH, POKUP, KOLVO FROM RASHOD WHERE TOVAR = :IN_TOVAR
INTO :OUT_DAT, :OUT_POKUP, :OUT_KOLVO DO
SUSPEND; END
Элементы языка SQL
Работа с хранимыми процедурами
Оператор SUSPEND
Оператор SUSPEND передает в вызывающее приложение значения результирующих параметров (перечисленных после слова RETURNS в описании функции), имеющие место на момент выполнения SUSPEND. Когда от оператора SELECT вызывающего приложения приходит запрос на следующее значение выходных параметров , выполнение хранимой процедуры возобновляется.
Пример:
CREATE PROCEDURE POK_LIST (IN_TOVAR VARCHAR(20) ) RETURNS (POK VARCHAR(20) ) AS
DECLARE VARIABLE AVG_KOLVO INTEGER; BEGIN
SELECT AVG(KOLVO) FROM RASHOD WHERE TOVAR = :IN_TOVAR
INTO :AVG_KOLVO;
FOR SELECT POKUP FROM RASHOD WHERE KOLVO >= :AVG_KOLVO INTO :POK
DO BEGIN
IF (:POK IS NULL) THEN
POK = “Покупатель не указан”; SUSPEND;
END END
Элементы языка SQL
Работа с хранимыми процедурами
Оператор WHILE … DO
WHILE (<условие>) DO < оператор > ;
В цикле проверяется выполнение условия. Если истинно – выполняется оператор. Цикл продолжается пока условие не станет ложным.
Пример:
CREATE PROCEDURE SUM_0_N ( N INTEGER ) RETURNS ( S INTEGER ) AS
DECLARE VARIABLE TMP INTEGER; BEGIN
S = 0;
TMP=1;
WHILE ( TMP <= N ) DO BEGIN
S = S+TMP; TM = TPM + 1; END
END