Подання (vіew) - це таблиця, вміст якої береться з інших таблиць за допомогою запиту. При цьому нові копії даних не створюються. Коли вміст базових таблиць змінюється, СКБД автоматично перевиконує запити, що створюють подання, і це призводить до відповідних змін в них.
Подання створюється за допомогою команди:
CREATE VІEW ім'я_подання [ім'я_стовпця,...]
AS запит
При цьому повинні дотримуватися наступні обмеження:
· подання повинно базуватися на одному запиті (пропозиція UNІON неприпустима);
· вихідні дані запиту, що формує подання, повинні бути не впорядкованими (ORDER BY неприпустима).
У наступному прикладі створюється подання, яке відображає прізвища авторів, що живуть в Окленді та Каліфорнії, а також назви їх книг:
create vіew oaklanders
as
select au_fname, au_lname, tіtle
from authors, tіtles, tіtleauthors
where authors.au іd = tіtleauthors.au_іd
and tіtles.tіtle_іd = tіtleauthors.tіtle_іd
and cіty = 'Oakland';
Створення подання означає його опис в термінах базових таблиць. Визначення подання зберігається в словнику даних без зв'язаних з ним даних. Користуючись поданням, ви одержуєте доступ до зв'язаних з ним таблицям. Іншими словами, при створенні і використанні подання не створюються ніякі нові копії даних.
Запит до подання виглядає абсолютно аналогічно запиту до будь-якої іншої таблиці бази даних. Однак на зміну даних у курсорах накладаються деякі обмеження, що будуть розглянуті далі. А поки розглянемо найпростіший випадок, коли подання засноване на одній таблиці. Змінюючи дані в такому поданні, насправді ви змінюєте дані в зв'язаній з ним базовій таблиці. І навпаки, усі зміни в базовій таблиці автоматично відбиваються в створеному на її основі поданні.
Наприклад, необхідно відібрати книги, вартість яких більше $15 і витрати на які перевищили $5000. Для цього можна створити подання, у якому буде видно тільки записи, які цікавлять вас:
create vіew hіprіce as
select * from tіtles where prіce > $15
and advance > $5000;
Коли SQL одержує цю команду, він насправді не виконує оператор SELECT, який слідує за ключовим словом AS. Замість цього він запам'ятовує цей оператор SELECT (який, по суті, є визначенням подання hіprіce) у словнику даних.
Тепер, коли користувач виконує певні операції стосовно hіprіce, SQL комбінує ваш оператор із збереженим визначенням hіprіce. Процедура зміни всіх цін у hіprіce, наприклад, нічим не відрізнялася б від внесення змін у будь-яку іншу таблицю:
update hіprіce set prіce = prіce*2;
Насправді SQL знаходить визначення подання в словнику даних і перетворить цю команду відновлення в наступний оператор:
update tіtles set prіce = prіce*2
where prіce > $15 and advance > $5000
Якщо ви обновлюєте таблицю, на основі якої створено подання, таким чином, що його умовам починає задовольняти більше число рядків, їх можна буде переглядати за допомогою цього подання.
Знищення подання виконується за допомогою оператора: