
- •Мова адміністрування бд (мабд)
- •Група Data Control Language (dcl)
- •Група Transaction Control Language (tcl)
- •Група Cursor Control Language (ccl)
- •Пр иклади використання операторів адміністрування
- •Створення і ліквідація ролей
- •Передача привілеїв і ролей
- •Уявлення (View)
- •Поняття збереженої процедури
- •Збережені процедури в конкретних середовищах
- •Типи збережених процедур
- •Створення, зміна і видалення збережених процедур
- •Виконання збереженої процедури .
- •6.5. Визначення тригера в стандарті мови sql
- •Реалізація тригерів в середовищі ms sql Server
- •Типи тригерів
- •Програмування тригера
- •6.7. Технології використання sql
- •Поняття інтерактивного sql
- •Утиліта інтерактивного доступу isql субд Sybase sql Anywhere
- •Приклад використання інтерактивного sql в субд mysql
Уявлення (View)
Однією з таких можливостей є поява так званих уявлень(Уіе\Уз). їх ідея полягає створенні віртуальних таблиць з можливостю маніпулювання ними як із реальними. Це знижує ризик небажаних змін даних від помилок та спростити виконання запитів.
Визначення:
Уявлення (view) - це таблиця, значення якої береться з інших таблиць за допомогою запиту. При цьому нові копії даних не створюються. Коли вміст базових таблиць змінюється, СУБД автоматично перевиконує
запити, які створюють View, що приводить до відповідних змін в уявленнях.
Уявлення створюється за допомогою команди:
CREATE VIEW <ім’я_Уявлення> [<ім'я_колоики>...]
AS <запит>
При цьому повинні дотримуватися наступні обмеження:
уявлення повинне базуватися на єдиному запиті (використання UNION не допускається)
вихідні дані запиту, що формує уявлення, мають бути не впорядковані (використання ORDER BY не допускається)
Створимо уявлення, що в якому міститься інформація про студентів, здані ними екзамени та отримані оцінки :
CREATE VIEW studentНМ AS
SELECT stud, name, mark, mark, course, coursetitle, course, annotation FROM stud, exam, mark, course
WHERE stud.stud_id=mark.stud_id AND exam.exam_id=mark.exam id AND course, course jd-exam. course_id
Тепер будь-який користувач, чиїх прав на доступ до даного уявлення достатньо, може здійснювати вибірку даних studentHM. Наприклад:
SELECT name, annotation FROM studentHM WHERE mark = ’A'
SELECT name, count(courset itle) FROM studentHM GROUP BY name (Права користувачів на доступ до уявлення призначаються також, за допомогою команд GRANT/ REVOKE.)
Із приведеного вище прикладу досить зрозуміло показують переваги використання уявлень. Якщо запити типу «вибрати всі екзамени даного студента із вказанням назви предмета» виконуються досить часто, то створення таблиці studentHM, що представляється, значно скоротить ресурсні витрати на виконання з’єднання чотирьох базових таблиць stud, exam, mark, course. Крім того, в уявленні може бути представлена інформація, що явно не зберігається жодній із базових таблиць. Наприклад, одна із колонок уявлення, може бути обчислювана:
CREATE VIEW amount (name, av_mark) AS SELECT stud, name, avarage (mark, mark)
FROM stud, mark
WHERE stud.stud_id-mark.stud_id GROUP BY name;
Тут використана ще одна, раніше не описана, можливість SQL - присвоєння нових імен колонкам уявлення. У приведеному прикладі середній
бал кожного студента буде зберігаетися в колонці з ім'ям сп>_тагк. Зауважимо, що якщо ми хочемо привласнити нові імена колонкам уявлення, потрібно вказувати імена для всіх колонок. Тип даних колонки уявлення та його нульовий статус завжди залежать від того, як він був визначений в базовій таблиці (таблицях). Запит на вибірку даних до уявлення виглядає абсолютно аналогічно запиту до будь-якої іншої таблиці. Однак на зміну даних в уявленні накладаються обмеження. Стисло про них можна сказати таке:
Якщо уявлення береться з однієї таблиці, зміни даних в ньому допускаються. При цьому змінюються дані в пов'язаній з ним таблиці.
Якщо уявлення береться з більш ніж однієї таблиці, то зміни даних в ньому не допускаються, оскільки в більшості випадків СУБД не може правильно відновити схему базових таблиць із схеми уявлення(характерний приклад зворотньої задачі).
Видалення уявлення проводиться за допомогою оператора:
DROP VIEW <ім’я_представлення>