Віртуальні таблиці використовуються для створення постійно зберігаються складних запитів. До віртуальної таблиці можна звертатися як до звичайної таблиці. Вона може використовуватися в якості таблиці в пропозиціях SELECT, INSERT, INPUT, UPDATE, DELETE. Віртуальна таблиця не займає місця в базі даних як звичайна таблиця. Синтаксис наступний:
CREATE VIEW
[WITH CHECK OPTION]
Необов'язкова фраза WITH CHECK OPTION (з перевіркою) вказує, що для операцій INSERT і UPDATE над цією таблицею повинна здійснюватися перевірка, яка забезпечує задоволення WHERE фрази підзапиту.
Таким чином, віртуальна таблиця - це пойменована таблиця, що отримується в результаті виконання SELECT пропозиції з можливою зміною імен стовпців.
Проста віртуальна таблиця. Це віртуальна таблиця, яка є копією вихідної, але під іншим ім'ям.
SELECT * FROM FACULTY
Можна також створювати віртуальні таблиці на основі інших віртуальних таблиць.
Вибір колонок. Можна вказати на використання у віртуальній таблиці окремих колонок вихідної таблиці.
CREATE VIEW DEP_HEAD_NAMES (Name, Head) AS
SELECT * FROM FACULTY
Перейменування колонок. Синтаксис створення віртуальних таблиць дозволяє перейменовувати колонки результат-ної таблиці. Для цього необхідно явно вказати колонки у фразі SELECT і вказати необхідні імена колонок у фразі CREATE VIEW.
CREATE VIEW TEACHER_NAME_POST (First_Name, Position) AS
SELECT Name, Post FROM TEACHER
Складні конструкції. Пропозиція SELECT у віртуальній таблиці може мати довільної сложнос-ма. Наприклад, для отримання віртуальної таблиці зі списком викладачів факультету інформатики, які працюють також на інших факультетах, слід написати.
CREATE VIEW TEACHER_2 (First_Name, Position) AS
SELECT TEACHER.Name, Post
FROM FACULTY, DEPARTMENT, TEACHER
WHERE FACULTY. # F = DEPARTMENT. # F AND
DEPARTMENT. # D = TEACHER. # D AND
FACULTY.Name = 'IT' AND
FROM FACULTY, DEPARTMENT, TEACHER
WHERE FACULTY. # F = DEPARTMENT. # F AND
Обмеження на використання пропозиції SELECT. SQL накладає наступні обмеження на вико-ва-ня пропозиції SELECT при визначенні віртуальної таблиці:
· Не можна використовувати оператор UNION,
· Не можна використовувати фразу ORDER BY.
Зміна даних через віртуальні таблиці. Віртуальні таблиці можна використовувати в пропозиціях UPDATE, INSERT, DELETE для зміни даних в базі даних, але при цьому повинні виконуватися наступні умови:
· Не можна використовувати пропозицію DELETE до віртуальних таблиць, певним на багатьох базових таблицях
· Пропозиція INSERT можна використовувати тільки в тому випадку, якщо віртуальна таблиця містить всі NOT NULL колонки базової таблиці.
· Якщо відбувається вставка або оновлення через з'єднану віртуальну таблицю, то все оновлювані записи повинні належати одній і тій же фізичній таблиці.
· Не можна вставляти або оновлювати записи через віртуальну таблицю, певну з фразою DISTINCT.
· Не можна оновлювати віртуальні колонки (тобто колонки, які є обчисленням виразу або виконан-ні-ня функції)
Можливі застосування віртуальних таблиць. Віртуальна таблиця може використовуватися для:
· Забезпечення логічної незалежності,
· Забезпечення захисту даних,
· Здійснення конвертації даних,
· Спрощення конструкцій складних запитів.
Забезпечення логічної незалежності. Одна з основних завдань, яке дозволяють вирішувати віртуальні табли-ці, - забезпечення незалежності призначених для користувача програм від зміни логічної структури бази даних при її розширенні і (або) зміну розміщення стовпців, що виникає, наприклад, при розщепленні таблиць.
Віртуальні таблиці та захист даних. Віртуальні таблиці можуть використовуватися для вказівки тієї інфор-ма-ції, яка є доступною того чи іншого користувача. Обмежуючи доступ користувачів тільки через віртуальні таблиці, можна вирішувати проблему захисту даних.
Конвертація даних. Віртуальні таблиці можуть виявитися корисними, коли необхідно представити користувачеві дані в форматі, який вирізняється від використовуваного при зберіганні даних в базі даних. Наприклад, досить легко можна вирішити проблему перетворення даних про зарплату, що зберігається в базі даних в одній грошово-ної одиниці, в іншу грошову одиницю в тій чи іншій віртуальній таблиці.
Спрощення конструкцій складних запитів. Віртуальними таблицями також можна скористатися в тому разі, коли необхідно формулювати безліч складних запитів, що мають ієрархічну структуру. У цьому випадку створюється ієрархічна структура віртуальних таблиць.
Видалення віртуальної таблиці. Є команда для видалення віртуальної таблиці. Її синтаксис наступний:
DROP VIEW view_name
При видаленні віртуальної таблиці слід пам'ятати, що всі інші віртуальні таблиці, які визначалися на її основі, стають недійсними.