От автора: представление — это не что иное, как оператор SQL, который хранится в базе данных с соответствующим именем. На самом деле представление является определенным структурированным набором данных таблицы в виде предопределенного SQL-запроса.
Представления SQL могут содержать все строки таблицы или определенные выбранные строки. Представление может быть создано из одной или нескольких таблиц, это зависит от составленного для представления SQL-запроса.
Представления, которые являются типом виртуальных таблиц, позволяют пользователям делать следующее:
Структурировать данные таким образом, который будет наиболее естественным или интуитивным для пользователей или классов пользователей.
Ограничивать доступ к данным таким образом, чтобы пользователь мог находить и изменять (в некоторых случаях) только те данные, которые ему нужны, и не более того.
Обобщать данные из разных таблиц, чтобы использовать их для различных отчетов.
Создание представлений
Представления базы данных создаются с помощью инструкции CREATE VIEW. Представления можно создать из одной таблицы, нескольких таблиц или другого представления.
Пользователь должен иметь соответствующие системные привилегии в зависимости от конкретной реализации.
Основной синтаксис CREATE VIEW следующий:
1 2 3 4 |
CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition]; |
Вы можете включить в инструкцию SELECT несколько таблиц так же, как вы используете их в обычном запросе SQL SELECT.
Пример
Рассмотрим таблицу CUSTOMERS, содержащую следующие записи:
Ниже приведен пример создания представления из таблицы CUSTOMERS. Это представление будет использоваться для получения имени и возраста клиенттов из таблицы CUSTOMERS.
1 2 3 |
CREATE VIEW CUSTOMERS_VIEW AS SELECT name, age FROM CUSTOMERS; |
Теперь вы можете выполнить запрос CUSTOMERS_VIEW так же, как вы выполняете запрос к самой таблице. Ниже приведен пример.
1 |
SELECT * FROM CUSTOMERS_VIEW; |
В результате мы получим следующее.
Параметр WITH CHECK OPTION
WITH CHECK OPTION является параметром CREATE VIEW. Параметр WITH CHECK OPTION назначается для того чтобы гарантировать, что все запросы UPDATE и INSERT удовлетворяют условиям в определении представления. Если они не удовлетворяют условию, запрос UPDATE или INSERT возвращает ошибку.
В следующем блоке кода приведен пример создания такого же представления CUSTOMERS_VIEW с параметром WITH CHECK OPTION.
1 2 3 4 5 |
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.
Обновление представления
Представление может быть обновляемым, если выполняются определенные условия, которые приведены ниже:
Условие SELECT не должно содержать ключевое слово DISTINCT.
Условие SELECT не должно содержать сводных функций.
Условие SELECT не должно содержать заданных функций.
Условие SELECT не должно содержать заданных операторов.
Условие SELECT не должно содержать ORDER BY.
Условие FROM не должно содержать нескольких таблиц.
Условие WHERE не должно содержать подзапросов.
Запрос не должен содержать GROUP BY или HAVING.
Обработанные столбцы не должны обновляться.
Все NOT NULL столбцы из базовой таблицы должны быть включены в представление, чтобы запрос INSERT функционировал.
Таким образом, если представление удовлетворяет всем вышеперечисленным правилам, вы можете обновить это представление. В следующем блоке кода показан пример обновления возраста для клиента Ramesh.
1 2 3 |
UPDATE CUSTOMERS_VIEW SET AGE = 35 WHERE name = 'Ramesh'; |
Это полностью обновит саму таблицу CUSTOMERS, что отразится и на представлении. Теперь попробуйте выполнить запрос в самой таблице, и результат выполнения инструкции SELECT будет выглядеть следующим образом.
Добавление строк в представление
В представление можно вставлять строки данных. Те же правила, которые применяются для команды UPDATE, применяются также и для команды INSERT.
Здесь мы не можем вставлять строки в CUSTOMERS_VIEW, потому что мы не включили в это представление все NOT NULL столбцы, иначе в представление можно было бы вставить строки так же, как вы вставляете их в таблицу.
Удаление строк из представления
Строки данных могут быть удалены из представления. Те же правила, которые применяются для команд UPDATE и INSERT, применяются к команде DELETE. Ниже приведен пример удаления записи с AGE = 22.
1 2 |
DELETE FROM CUSTOMERS_VIEW WHERE age = 22; |
В результате строка будет удалена из таблицы базы CUSTOMERS, и это также будет отображено в самом представлении. Теперь попробуйте выполнить запрос к таблице базы, результат выполнения инструкции SELECT будет выглядеть следующим образом.
Удаление представлений
Очевидно, что, если у вас есть представление, когда оно больше не нужно, его нужно удалить. Для этого используется следующий синтаксис:
1 |
DROP VIEW view_name; |
Ниже приведен пример того, как удалить представление CUSTOMERS_VIEW из таблицы CUSTOMERS.
1 |
DROP VIEW CUSTOMERS_VIEW; |
Источник: //www.tutorialspoint.com/
Редакция: Команда webformyself.