View (представление) не более чем заявление в SQL, которое хранится в базе данных с соответствующим именем. View на самом деле является композиция из таблицы в виде заранее определенного запроса SQL.
Представление может содержать все строки таблицы или выбор строк из таблицы. Представление может быть создано из одного или нескольких таблиц, которая зависит от письменного запроса SQL, чтобы создать представление.
Представления являются типом виртуальных таблиц, которые позволяют пользователям выполнять следующие действия:
Представления в базе данных создается с помощью заявления CREATE VIEW. Представления могут быть созданы из одной таблицы, нескольких таблиц или других представлений.
Для того, чтобы создать представление, пользователь должен иметь соответствующую привилегию системы в соответствии с конкретной реализацией.
Основной синтаксис CREATE VIEW выглядит следующим образом:
CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition];
Вы можете включать в себя несколько таблиц в вашем SELECT аналогично тому, как вы используете их в обычном SQL запросе SELECT.
Рассмотрим таблицу CUSTOMERS , имеющих следующие записи:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 38 | Krasnodar | 55500.00 | | 3 | Oleg | 33 | Rostov | 34000.00 | | 4 | Masha | 35 | Moscow | 34000.00 | | 5 | Ruslan | 34 | Omsk | 45000.00 | | 6 | Dima | 32 | SP | 45000.00 | | 7 | Roma | 34 | SP | 10000.00 | +----+----------+-----+-----------+----------+
Ниже приведен пример создания представления из таблицы Customers. Эта представление будет использоваться для показа имени клиента и возраст из таблицы Customers.
SQL > CREATE VIEW CUSTOMERS_VIEW AS SELECT name, age FROM CUSTOMERS;
Теперь вы можете запросить CUSTOMERS_VIEW подобным образом, как вы запрашиваете реальную таблицу. Ниже приведен пример того же.
SQL > SELECT * FROM CUSTOMERS_VIEW;
Это произведет следующий результат.
+----------+-----+ | NAME | AGE | +----------+-----+ | Maxim | 35 | | AndreyEx | 38 | | Oleg | 33 | | Masha | 35 | | Ruslan | 34 | | Dima | 32 | | Roma | 34 | +----------+-----+
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, так как представление определяется данными, которые не имеют значение NULL в столбце AGE.
Представление может быть обновлено при определенных условиях, которые приведены ниже:
Таким образом, если вид удовлетворяет все указанные выше правила, то вы можете обновить представление. Следующий блок кода имеет пример для обновления возраста AndreyEx.
SQL > UPDATE CUSTOMERS_VIEW SET AGE = 39 WHERE name = 'AndreyEx';
Это в конечном итоге обновит клиентскую базу таблицы и те же будет отражаться в самом представлении. Теперь попробуйте запросить базовую таблицу с помощью SELECT, оператор произведет следующий результат.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 39 | Krasnodar | 55500.00 | | 3 | Oleg | 33 | Rostov | 34000.00 | | 4 | Masha | 35 | Moscow | 34000.00 | | 5 | Ruslan | 34 | Omsk | 45000.00 | | 6 | Dima | 32 | SP | 45000.00 | | 7 | Roma | 34 | SP | 10000.00 | +----+----------+-----+-----------+----------+
Строки данных могут быть вставлены в представление. Те же правила, которые применяются к команде UPDATE применяются также к команде INSERT.
Здесь мы не можем вставлять строки в CUSTOMERS_VIEW, потому что мы не включили к всем столбцам NOT NULL в этом представлении, в противном случае вы можете вставлять строки в представлении аналогично тому, как вставляете их в таблице.
Ряды данных могут быть удалены из представления. Те же правила, которые применяются к командам UPDATE и INSERT применяются к команде DELETE.
Ниже приведен пример, чтобы удалить запись, имеет возраст = 33.
SQL > DELETE FROM CUSTOMERS_VIEW WHERE age = 33;
Это в конечном счете удалит строку из базовой таблицы клиентов, и то же самое будет отражать в самом представлении. Теперь попробуйте запросить базовую таблицу с помощью SELECT, оператор произведет следующий результат.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 38 | Krasnodar | 55500.00 | | 4 | Masha | 35 | Moscow | 34000.00 | | 5 | Ruslan | 34 | Omsk | 45000.00 | | 6 | Dima | 32 | SP | 45000.00 | | 7 | Roma | 34 | SP | 10000.00 | +----+----------+-----+-----------+----------+
Очевидно, где у вас есть представление, вам нужен способ, чтобы удалить представление, если он больше не нужен. Синтаксис очень прост и приведен ниже:
DROP VIEW view_name;
Ниже приведен пример удаления CUSTOMERS_VIEW из таблицы Customers.
DROP VIEW CUSTOMERS_VIEW;