ОБД Конспект
.docТема: «Представлення».
Представлення – це тимчасова віртуальна таблиця, що зберігає результати виконання запиту. Частіше всього запиту на вибірку.
Представлення не існують не залежно від таблиць. (немає таблиці – немає представлення). Данні в представленнях модифікуються автоматично.
{ CREATE| ALTER} VIEW імя_представлення (імя_столбца [,...n])] [WITH ENCRYPTION] AS SELECT_оператор [WITH CHECK OPTION]
|
Параметр [WITH ENCRYPTION] здійснює примусове шифрування тексту запиту.
Параметр оператор [WITH CHECK OPTION] здійснює відстеження змін в базовій таблиці.
Використання представлень дозволяє підвищити надійність і секретність даних, що зберігаються, регламентувати порядок їх використання та суттєво скоротити обсяги трафіку.
Деякі перегляди можуть мати динамічний вміст, тобто оновлюватися слідом за базовою таблицею. Для побудови такого представлення необхідно:
-
Будувати його лише на одній базовій таблиці
-
Не використовувати при побудові агрегатних функцій, під запитів, групування, додаткової фільтрації.
-
Включати представлення лише обов’язкові для заповнення поля.
Кожен з типів перегляду має свої переваги в використанні:
Динамічні представлення дозволяють приховати
Статичні дають можливість групувати різні предикати пошуку.
Використання переглядів має певний ряд переваг:
-
Незалежність від даних
-
Зниження вартості їх передачі
-
Забезпечення цілісності та надійності передачі
Тема: «Збереження процедури».
Збережена процедура – це набір операторів, що здійснюють обробку об’єкта даних бази. В результаті роботи повертає множину значень.
Процедури зберігаються в базі у відкомпільованому вигляді.
Переваги використання:
-
Швидкість роботи значно зростає
-
Розробка стає модульною
-
Доступ до даних здійснюється послідовно
-
Одна збережена процедура може викликати іншу.
Збережені процедури ділять на три групи:
-
Системні (виконують адміністративні дії та спрямовані не на вміст бази, а на її обєкти)
-
Користувацькі збережені процедури (Виконують дії по обробці даних)
-
Тимчасові збережені процедури (Існують деякий час, а потім знижуються сервером)
-
Локальні (використовуються 1-м користувачем)
-
Глобальні (можуть бути використані багатьма користувачами)
-
Створення процедури
<визначення_процедури>::= {CREATE | ALTER } [PROCEDURE] і’мя_процедури [;номер] [{@і’мя_параметра тип_даних} [VARYING ] [=default][OUTPUT] ][,...n] [WITH { RECOMPILE | ENCRYPTION | RECOMPILE ENCRYPTION }] [FOR REPLICATION] AS sql_оператор [...n]
|
Збереження процедури
[[ EXEC [ UTE] і’мя_процедури [;номер] [[@і’мя_параметра=]{значення | @і’мя_змінної} [OUTPUT]|[DEFAULT]][,...n]
|
Тема: «Функції користувача та вбудовані функції».
План
1) Поняття функції користувача
2) Функції Scalar
3) Функції Inline
4) Функції Multi-statement
5) Вбудовані функції
5.1 Математичні функції
5.2 Рядкові функції
5.3 Функції для роботи з датою і часом
1) Функція користувача – це окремій незалежний фрагмент коду, який виконує специфічну нестандартну задачу.
2) Всі функції, що можна створить мовою SQL поділяють на три групи:
3) Функції Scalar – повертають одне єдине значення.
<визначення_скаляр_функції>::=
{CREATE | ALTER } FUNCTION [власник.] ім’я_функції
( [ { @ім’я_параметра скаляр_тип_даних
[ = default ] } [,...n] ] )
RETURNS скаляр_тип_даних
[WITH {ENCRYPTION | SCHEMABINDING} [,...n] ]
[AS]
BEGIN
<тіло_функції>
RETURN скаляр_вираз
END
------------------------------------------------------------------//-------------------------------------------------------------------
Створити і застосувати функцію скалярного типу для обчислення сумарної кількості товару, що поступив за певну дату. Власник функції – користувач з ім'ям user1.
CREATE FUNCTION user1.sales(@data DATETIME)
RETURNS INT
->AS
BEGIN
DECLARE @c INT
SET @c=(SELECT SUM(кількість)
FROM Операція
WHERE дата=@data)
RETURN (@c)
END
Виклик функції:
Declare @kol
Set @kol=user1.sales(“13-12-10”)
Select @kol;
Дана функція приймає аргумент типу дата, ця дата порівнюється з вмістом колонки в таблиці операція. Якщо значення співпадають то кількість товару відповідно цій даті додається до загальної суми. В результаті роботи функція повертає цілу додатнню змінну.
-
Функції Inline – будується на основі запиту на вибірку, та повертають таблицю(зміни в цю таблицю вносити не можна).
<визначення_табл_функції>::=
{CREATE | ALTER } FUNCTION [власник.]
ім’я_функції
( [ { @ім’я_параметра скаляр_тип_даних
[ = default ] } [,...n] ] )
RETURNS TABLE
[ WITH {ENCRYPTION | SCHEMABINDING} [,...n] ]
[AS]
RETURN [(] SELECT_оператор [)]
Функції Inline повертають таблицю, стуктуру якої визначає та формує сервер, на основі запиту SELECT.
-----------------------------------------------------------------//-------------------------------------------------------------------
Створити і застосувати функцію табличного типу для визначення двох найменувань товару з найбільшим залишком
CREATE FUNCTION user1.itog()
RETURNS TABLE
AS
RETURN (SELECT TOP 2 Товар.Назва
FROM Товар INNER JOIN Склад ON Товар.КодТовара=Склад.КодТовара
ORDER Склад.Залишок DESC)
Виклик функції:
Select Назва.
From user1.itog();
Дана функція не має параметрів (аргументів), результуюча таблиця формується з запиту на вибірку, заснованого на двох пов’язаних таблицях. Результат вибірки сортується за спаданням, а необхідна кількість найменувань товару, відбирається функцією Тор з аргументом 2.
5) Multi-statement - будуються на основі активного запиту, структура таблиці задається в самій функції.
<визначення_мульти_функції>::=
{CREATE | ALTER }FUNCTION [власник.]
ім’я_функції ( [ { @ім’я_параметра скаляр_тип_даних [=default]}[,...n]])
RETURNS @ім’я_параметра TABLE <визначення_таблиці>
[WITH {ENCRYPTION | SCHEMABINDING} [,...n] ]
[AS]
BEGIN
<тіло_функції>
RETURN
END
Функції Multi-statement повертають таблиці явно визначеної структури, ця структура визначаються при описі функції. Визначення відбувається шляхом оператора CREATE TABLE.
5) Вбудовані, або стандартні функції дозволяють виконувати наступні групи дій:
Функції конфігурування – налаштовують роботу сервера бази та привілеїв користувачів
Функції системи безпеки – регламентують доступ до бази та її вмісту.
Функції роботи з метаданими – забезпечують керування описом вмісту кожної з таблиць.
Статистичні функції – ведуть облік звернень до бази та її вмісту.
5.1) Математичні функції – описують числові данні.
5.2) дозволяють працювати не лише з символами а із ASCI кодами.
5.3) Функції обробки даних – опрацьовують дату/час.
Тема: «Тригери.».
План
1) Визначення тригера в мові SQL
2) Реалізація тригерів MS SQL Server
3) Типи тригерів
4) Програмування тригерів
Тригер – це специфічно збережена процедура, яка записується сервером автоматично в наслідок настання певної події. Кожен тригер пов'язаний виключно з однією таблицею.
Створити тригер може лише власник б.д.
Тригер виконується не явно.
За допомогою тригерів досягаються наступні цілі:
|
Проте слід згадати і про властиві тригеру недоліки:
|
|
|
Формальний синтаксис:
<Визначення_тригера>::= {CREATE | ALTER} TRIGGER ім’я_тригера ON {ім’я_таблиці | ім’я_уявлення} [WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD } { [ DELETE] [,] [ INSERT] [,] [ UPDATE] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS sql_оператор[...n] } | { {FOR | AFTER | INSTEAD } { [INSERT] [,] [UPDATE] } [ WITH APPEND] [ NOT FOR REPLICATION] AS { IF UPDATE(ім’я_колонки) [ {AND | OR} UPDATE(ім’я_колонки)] [...n] | IF (COLUMNS_UPDATES(){оператор_біт_обробки} біт_маска_зміни) {оператор_біт_порівняння}бит_маска [...n]} sql_оператор [...n] } }
|
В SQL Server існує два параметри, що визначають поведінку тригерів:
AFTER. Тригер виконується після успішного виконання команд, що викликали його. INSTEAD. Тригер викликається замість виконання команд. На відміну від AFTER - тригера INSTEAD - тригер може бути визначений як для таблиці, так і для уявлення. Для кожної операції INSERT, UPDATE, DELETE можна визначити тільки один INSTEAD -тригер.