
Презентации БД (ВФ) / DB_lec8
.pdf
SQL
Создание представлений
Представление это объект БД на основе одной или нескольких таблиц и/или других представлений.
Преимущества представлений
Ограниченный доступ |
|
|
|
Упрощенное создание |
|
к данным |
|
|
|
сложных запросов |
|
|
|
|
|
|
|
|
|
|
Независимость от |
|
Представление по |
данных |
|
разному одних и тех |
|
|
же данных |
|
|
|
|
|
|

SQL
Создание представлений
CREATE VIEW имя_представления [(имя_колонки, …)] AS запрос имя_представления – именует представление
имя_колонки – именует колонку представления.
AS – указывает начало определения представления.
запрос – определяет представление.
|
View |
View |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DML- ! " |
|
|
VIEW |
|
|
|
|
|

SQL
Создание представлений
Пример 1
CREATE VIEW MA_PROJ_V AS
SELECT * FROM PROJECT
WHERE SUBSTR(ProjNo, 1, 2) = ’MA’
Пример 2
CREATE VIEW dept_sum_v (name, minsal, maxsal, avgsal)
AS |
|
SELECT |
d.department_name, |
|
MIN(e.salary), |
MAX(e.salary), |
|
|
AVG(e.salary) |
FROM |
employees e JOIN departments d |
ON |
(e.department_id = d.department_id) |
GROUP BY d.department_name;

SQL
Процедурные элементы Transact SQL
Переменные
DECLARE @var1 <type>
SET @var1 = <значение>
SELECT @var1 = Ai
Операторы циклов
WHILE <логическое выражение> BEGIN
...
END
Условные операторы
IF(<логическое выражение) BEGIN
...
END
ELSE
BEGIN
...
END

SQL
Триггеры, как механизм ограничений целостности
•Триггер — программный код, автоматически вызываемая системой при наступлении заданного события.
•Срабатывание триггеров могут вызывать DML события: INSERT, UPDATE, DELETE.
•Таблица inserted: вставляемые данные. Таблица deleted: удаляемые данные.
Вызов DML операции |
Фиксация данных |
время
instead of триггер |
after триггер |
|

SQL
Триггры, как механизм ограничений целостности
CREATE TRIGGER имя_триггера
ON имя_целевого_объекта время_активации_триггера контролируемая операция тело_триггера
имя_триггера – определяет имя триггера
имя_целевого_объекта – задает целевую таблицу
время_активации_триггера – определяет этап срабатывания триггера: INSTEAD OF, AFTER
контролируемая операция – определяет на какое SQL-событие срабатывает триггер
Тело триггера указывает действие, которое должно быть выполнено при активации триггера

SQL
Триггры, как механизм ограничений целостности
Триггер AFTER:
•.! .
•" ! # $% & . ROLLBACK.

SQL
Триггры, как механизм ограничений целостности
Пример. Запретить добавлять запись о сотруднике зарплата которого, менее 10000 рублей
CREATE TRIGGER Tr1 ON emp
AFTER INSERT AS
BEGIN
if (select salary from inserted)<10000 rollback
print‘ Запрещено добавлять запись о сотруднике с окладом менее 10 000 рублей'
END

SQL
Курсоры
Курсор-указатель на контекстную область памяти.
Контекстная область
|
|
|
|
|
|
|
|
|
|
|
Номер |
должность |
Зарплата |
|
|
|
|
отдела |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
550 |
100 |
|
|
Активный набор |
|
|
|
|
|
|
|
1 |
550 |
100 |
|
|
|
|
|
|||
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
1 |
552 |
80 |
|
|
|
|
|
|
|
|
|
|
|
2 |
660 |
200 |
|
|
|
|
|
|
|
|
|
|
|
2 |
661 |
300 |
|
|
|
|
|
|
|
|
|
|
|
3 |
770 |
100 |
|
|
|
|
|
|
|
|
|
|
|
3 |
770 |
100 |
|
|
|
|
|
|
|
|
|
|
|
3 |
773 |
180 |
|
|
|
|
|
|
|
SQL
Курсоры
Функции выполняемые курсором:
•Обрабатывать последовательно, строка за строкой, наборы строк возвращаемые запросом.
•Контроль текущей обрабатываемой строки запроса, на основе которого сформирован курсор.
•Возможность программисту управлять курсором в процедурах или функциях.