Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОБД Конспект

.doc
Скачиваний:
15
Добавлен:
30.05.2020
Размер:
66.05 Кб
Скачать

Тема: «Представлення».

Представлення – це тимчасова віртуальна таблиця, що зберігає результати виконання запиту. Частіше всього запиту на вибірку.

Представлення не існують не залежно від таблиць. (немає таблиці – немає представлення). Данні в представленнях модифікуються автоматично.

{ CREATE| ALTER} VIEW імя_представлення

(імя_столбца [,...n])]

[WITH ENCRYPTION] AS SELECT_оператор [WITH CHECK OPTION]

Параметр [WITH ENCRYPTION] здійснює примусове шифрування тексту запиту.

Параметр оператор [WITH CHECK OPTION] здійснює відстеження змін в базовій таблиці.

Використання представлень дозволяє підвищити надійність і секретність даних, що зберігаються, регламентувати порядок їх використання та суттєво скоротити обсяги трафіку.

Деякі перегляди можуть мати динамічний вміст, тобто оновлюватися слідом за базовою таблицею. Для побудови такого представлення необхідно:

  1. Будувати його лише на одній базовій таблиці

  2. Не використовувати при побудові агрегатних функцій, під запитів, групування, додаткової фільтрації.

  3. Включати представлення лише обов’язкові для заповнення поля.

Кожен з типів перегляду має свої переваги в використанні:

Динамічні представлення дозволяють приховати

Статичні дають можливість групувати різні предикати пошуку.

Використання переглядів має певний ряд переваг:

  1. Незалежність від даних

  2. Зниження вартості їх передачі

  3. Забезпечення цілісності та надійності передачі

Тема: «Збереження процедури».

Збережена процедура – це набір операторів, що здійснюють обробку об’єкта даних бази. В результаті роботи повертає множину значень.

Процедури зберігаються в базі у відкомпільованому вигляді.

Переваги використання:

  1. Швидкість роботи значно зростає

  2. Розробка стає модульною

  3. Доступ до даних здійснюється послідовно

  4. Одна збережена процедура може викликати іншу.

Збережені процедури ділять на три групи:

  1. Системні (виконують адміністративні дії та спрямовані не на вміст бази, а на її обєкти)

  2. Користувацькі збережені процедури (Виконують дії по обробці даних)

  3. Тимчасові збережені процедури (Існують деякий час, а потім знижуються сервером)

    1. Локальні (використовуються 1-м користувачем)

    2. Глобальні (можуть бути використані багатьма користувачами)

Створення процедури

<визначення_процедури>::=

{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;

Дана функція приймає аргумент типу дата, ця дата порівнюється з вмістом колонки в таблиці операція. Якщо значення співпадають то кількість товару відповідно цій даті додається до загальної суми. В результаті роботи функція повертає цілу додатнню змінну.

  1. Функції 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 -тригер.

Соседние файлы в предмете Базы данных и знаний