Використання віртуальних таблиць

Віртуальні таблиці використовуються для створення постійно зберігаються складних запитів. До віртуальної таблиці можна звертатися як до звичайної таблиці. Вона може використовуватися в якості таблиці в пропозиціях SELECT, INSERT, INPUT, UPDATE, DELETE. Віртуальна таблиця не займає місця в базі даних як звичайна таблиця. Синтаксис наступний:

CREATE VIEW [(Column1, column2.)] AS

[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

При видаленні віртуальної таблиці слід пам'ятати, що всі інші віртуальні таблиці, які визначалися на її основі, стають недійсними.

Схожі статті