Створення та використання зображень засобами SQL

Зображення (VIEW) є віртуальною таблицею, вміст якої визначається SQL запитом. Для користувача бази даних зображення виглядає як реальна таблиця, що складається з рядків і стовпців. Однак, на відміну від таблиці, зображення як сукупність значень в базі даних реально не існує. Рядки та стовпці даних, які користувач бачить з допомогою зображення, є результатами запиту, що лежить в його основі. SQL створює ілюзію зображення, привласнюючи йому ім'я, як таблиці, і зберігає його визначення в базі даних.

Коли СУБД зустрічає в інструкції SQL запиту, звернення до зображення, вона відшукує його визначення, збережене в базі даних. Потім СУБД перетворює запит, який посилається на зображення, в еквівалентний йому запит, який в свою чергу звертається до вихідних таблиць зображення і виконує його. Таким чином, СУБД створює ілюзію існування зображення у вигляді окремої таблиці і в той же час зберігає цілісність вихідних таблиць.

Якщо визначення зображення просте, то СУБД формує кожен рядок результуючої віртуальної таблиці при кожному зверненні до зображення, витягуючи дані з вихідних таблиць. Якщо ж визначення складне, СУБД виконує запит, що визначає зображення, і зберігає його результати в тимчасовій таблиці. З неї СУБД бере дані для формування результатів, при зверненні до даного зображення. Коли тимчасова таблиця стає непотрібною, СУБД видаляє її. Але незалежно від того, як саме СУБД виконує інрукцію, що є визначенням зображення, для користувача результат буде одним і тим же. SQL запит на вибірку даних із зображення здійснюється так само, як і на вибірку даних з реальної таблиці.

Для створення зображення використовується команда CREATE VIEW, яка має наступний формат:

CREATE VIEW <Ім'я зображення> [ (<Колонка зображення> [, <Колонка зображення>...] ) ]
AS <SELECT>;

При необхідності в інструкції CREATE VIEW можна вказати ім'я для кажного стовпця зображення. Якщо список імен стовпців вказується, то він повинен містити стільки елементів, скільки стовпців міститься в SQL запиті. Зверніть увагу на те, що задаються лише імена стовпців, а тип даних , довжина і інші характеристики беруться з визначення стовпця вихідної таблиці. Якщо список імен стовпців в інструкції CREATE VIEW відсутній, то кожен стовпець віртуальної таблиці отримує ім'я відповідного стовпця запиту. Список імен стовпців обов'язково повинен бути вказаний, якщо в запиті містяться два стовпця з однаковими іменами, а також при наявності в запиті обчислюваних стовпців. Хоча деякі СУБД автоматично присвоюють імена обчислюваним стовпцям, ці імена в дійсності не дуже корисні, так що краще виробити звичку завжди призначати власні імена обчислювальним стовпцям.

Приклад: для бази даних autobazae, яка складається з двох таблиць:

  1. Vendors - містить список людей, які являються продавцями автомобілів і складається з наступних полів: id (ключове поле), name.
  2. Cars — містить список автомобілів виставлених на продаж, яка складається з полів: Kod (ключове поле), v_id (зовнішній ключ для зв'язку з таблицею Vendors), color, year, price, displacement, mileage.

Нa основі цих двох таблиць створити зображення, яке міститиме інформацію про кількість автомобілів виставлених на продажу кожним продавцем.

CREATE VIEW car_count (NAME, CAR_COUNT)
AS
SELECT v.name, COUNT(c.v_id)
FROM najavni_avtomobili c, vendors v
WHERE c.v_id = v.id GROUP BY v.name;

Щоб змінити будь-яке зображення, доведеться його перестворити, тобто видалити і створити заново. При видаленні зображення необхідно також видалити всі залежні від нього об’єкти — тригери, збережувані процедури і інші зображення. В цьому полягає одне з головних незручностей роботи з зображеннями. Для видалення зображення в SQL існує команда:

DROP VIEW <Ім'я зображення>;

Матеріал був корисним, поділись в соціальних мережах:

Якщо тобі сподобалась дана тема, залиш свій коментар