Очень полезная возможность - сохранить запрос, который часто выполняется.
Представления SQL могут содержать все строки таблицы или определенные выбранные строки. Представление может быть создано из одной или нескольких таблиц, это зависит от составленного для представления SQL-запроса.
Представления, которые являются типом виртуальных таблиц, позволяют пользователям делать следующее:
Создание представлений
Представления базы данных создаются с помощью инструкции CREATE VIEW. Представления можно создать из одной таблицы, нескольких таблиц или другого представления.
Пользователь должен иметь соответствующие системные привилегии в зависимости от конкретной реализации.
Основной синтаксис CREATE VIEW следующий:
CREATE VIEW view_name AS SELECT column1, column2 ... FROM table_name WHERE [condition];
Вы можете включить в инструкцию SELECT несколько таблиц так же, как вы используете их в обычном запросе SQL SELECT.
Пример
Рассмотрим таблицу CUSTOMERS, содержащую следующие записи:
Ниже приведен пример создания представления из таблицы CUSTOMERS. Это представление будет использоваться для получения имени и возраста клиентов из таблицы CUSTOMERS.
CREATE VIEW CUSTOMERS_VIEW AS SELECT name, age FROM CUSTOMERS;
Теперь вы можете выполнить запрос CUSTOMERS_VIEW так же, как вы выполняете запрос к самой таблице. Ниже приведен пример:
SELECT * FROM CUSTOMERS_VIEW;
В результате мы получим имя и возраст клиентов.
Параметр WITH CHECK OPTION
WITH CHECK OPTION является параметром CREATE VIEW. Параметр WITH CHECK OPTION назначается для того чтобы гарантировать, что все запросы UPDATE и INSERT удовлетворяют условиям в определении представления. Если они не удовлетворяют условию, запрос UPDATE или INSERT возвращает ошибку.
В следующем блоке кода приведен пример создания такого же представления CUSTOMERS_VIEW с параметром WITH CHECK OPTION.
CREATE VIEW CUSTOMERS_VIEW AS SELECT name, age FROM CUSTOMERS WHERE age IS NOT NULL WITH CHECK OPTION;
Параметр WITH CHECK OPTION в этом случае должен блокировать запись значений NULL столбец представления AGE, поскольку для представления определено, что в столбце AGE не могут содержаться данные NULL.
Обновление представления
Можно изменять представление, но изменения будут проходить не в представлении (так как оно не содержит никакой реальной таблицы), а в таблице, на которую это представление указывает.
Представление может быть обновляемым, если выполняются определенные условия, которые приведены ниже:
Таким образом, если представление удовлетворяет всем вышеперечисленным правилам, вы можете обновить это представление. В следующем блоке кода показан пример обновления возраста для клиента Ramesh.
UPDATE CUSTOMERS_VIEW SET AGE = 35 WHERE name = 'Ramesh';
Это полностью обновит саму таблицу CUSTOMERS, что отразится и на представлении.
Добавление строк в представление
В представление можно вставлять строки данных. Те же правила, которые применяются для команды UPDATE, применяются также и для команды INSERT.
Здесь мы не можем вставлять строки в CUSTOMERS_VIEW, потому что мы не включили в это представление все NOT NULL столбцы, иначе в представление можно было бы вставить строки так же, как вы вставляете их в таблицу.
Удаление строк из представления
Строки данных могут быть удалены из представления. Те же правила, которые применяются для команд UPDATE и INSERT, применяются к команде DELETE. Ниже приведен пример удаления записи с AGE = 22:
DELETE FROM CUSTOMERS_VIEW WHERE age = 22;
В результате строка будет удалена из таблицы базы CUSTOMERS, и это также будет отображено в самом представлении.
Удаление представлений
Очевидно, что, если у вас есть представление, когда оно больше не нужно, его нужно удалить. Для этого используется следующий синтаксис:
DROP VIEW view_name;
Ниже приведен пример того, как удалить представление CUSTOMERS_VIEW из таблицы CUSTOMERS:
DROP VIEW CUSTOMERS_VIEW;