SQL — Використання уявлень

791

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

Подання SQL можуть містити всі рядки таблиці або певні вибрані рядки. Подання може бути створене з однієї або декількох таблиць, це залежить від складеного для подання SQL-запиту.

Подання, які є типом віртуальних таблиць, дозволяють користувачам робити наступне:

Структурувати дані таким чином, який буде найбільш природним або інтуїтивним для користувачів або класів користувачів.

Обмежувати доступ до даних таким чином, щоб користувач міг знаходити і змінювати (у деяких випадках) тільки ті дані, які йому потрібні, і не більше того.

Узагальнювати дані з різних таблиць, щоб використовувати їх для різних звітів.

Створення подань

Подання бази даних створюються з допомогою інструкції CREATE VIEW. Подання можна створити з однієї таблиці, декількох таблиць або іншого подання.

Користувач повинен мати відповідні системні привілеї в залежності від конкретної реалізації.
Основний синтаксис CREATE VIEW наступний:

CREATE VIEW AS view_name
SELECT column1, column2…..
FROM table_name
WHERE [condition];

Ви можете включити в інструкцію SELECT кілька таблиць, так само, як ви використовуєте їх у звичайному запиті SQL SELECT.

Приклад

Розглянемо таблицю CUSTOMERS, містить наступні записи:

SQL — Використання уявлень

Нижче наведено приклад створення уявлення з таблиці CUSTOMERS. Це подання буде використовуватися для отримання імені і віку клиенттов з таблиці CUSTOMERS.

CREATE VIEW AS CUSTOMERS_VIEW
SELECT name, age
FROM CUSTOMERS;

Тепер ви можете виконати запит CUSTOMERS_VIEW так само, як ви виконуєте запит до самої таблиці. Нижче наведено приклад.

SELECT * FROM CUSTOMERS_VIEW;

В результаті ми отримаємо наступне.

SQL — Використання уявлень

Параметр WITH CHECK OPTION

WITH CHECK OPTION є параметром CREATE VIEW. Параметр WITH CHECK OPTION призначається для того, щоб гарантувати, що всі запити UPDATE і INSERT задовольняють умовам у визначенні подання. Якщо вони не задовольняють умові, запит UPDATE або INSERT повертає помилку.

У наступному блоці коду наведено приклад створення такого уявлення CUSTOMERS_VIEW з параметром WITH CHECK OPTION.

CREATE VIEW AS CUSTOMERS_VIEW
SELECT name, age
FROM CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

Параметр WITH CHECK OPTION в цьому випадку повинен блокувати запису значень NULL стовпець подання AGE, оскільки для подання визначено, що у стовпці AGE не можуть містити значення NULL.

Оновлення подання

Подання може бути оновлюваним, якщо виконуються певні умови, які наведено нижче:

Умова SELECT не повинно містити ключове слово DISTINCT.

Умова SELECT не повинно містити зведених функцій.

Умова SELECT не повинно містити заданих функцій.

Умова SELECT не повинно містити заданих операторів.

Умова SELECT не повинно містити ORDER BY.

Умова FROM не повинно містити декількох таблиць.

Умова WHERE не повинно містити підзапитів.

Запит не повинен містити GROUP BY або HAVING.

Оброблені стовпці не повинні оновлюватися.

Всі NOT NULL стовпці з базової таблиці повинні бути включені в представлення, щоб запит INSERT функціонував.

Таким чином, якщо подання задовольняє всім перерахованим вище правилам, ви можете оновити це подання. У наступному блоці коду показаний приклад оновлення віку для клієнта Ramesh.

UPDATE CUSTOMERS_VIEW
SET AGE = 35
WHERE name = ‘Ramesh’;

Це повністю оновить саму таблицю CUSTOMERS, що позначиться і на виставі. Тепер спробуйте виконати запит у самій таблиці, і результат виконання оператора SELECT буде виглядати наступним чином.

SQL — Використання уявлень

Додавання рядків подання

До подання можна вставляти рядки даних. Ті ж правила, які застосовуються для команди UPDATE, застосовуються також і для команди INSERT.

Тут ми не можемо вставляти рядки в CUSTOMERS_VIEW, тому що ми не включили це уявлення все NOT NULL стовпці, інакше уявлення можна було б вставити рядки так само, як ви вставляєте їх у таблицю.

Видалення рядків з подання

Рядки даних можуть бути видалені з подання. Ті ж правила, які застосовуються для команд UPDATE і INSERT, застосовуються до команди DELETE. Нижче наведено приклад видалення запису з AGE = 22.

DELETE FROM CUSTOMERS_VIEW
WHERE age = 22;

У результаті рядок буде видалена з таблиці бази CUSTOMERS, і це також буде відображено в самому поданні. Тепер спробуйте виконати запит до таблиці бази, результат виконання оператора SELECT буде виглядати наступним чином.

SQL — Використання уявлень

Видалення уявлень

Очевидно, що, якщо у вас є уявлення, коли воно більше не потрібно, його потрібно видалити. Для цього використовується наступний синтаксис:

DROP VIEW view_name;

Нижче наведено приклад того, як видалити подання CUSTOMERS_VIEW з таблиці CUSTOMERS.

DROP VIEW CUSTOMERS_VIEW;