AS
AS
AS
SELECT EMPID, LASTNAME, SALARY + BONUS + COMM AS COMMON_PAY
FROM EMPLOYEE
и
CREATE VIEW V1 (EMPID, LASTNAME, COMMON_PAY)
SELECT EMPID, LASTNAME, SALARY + BONUS + COMM
FROM EMPLOYEE
Запрос определяет получаемое представление и может быть представлен в виде одного запроса или нескольких запросов, объединенных операцией UNION ALL (из теоретико-множественных операций при определении представления допускается использование только операции UNION ALL). В каждый момент при обращении к представлению оно содержит строки, получаемые при выполнении запроса.
Представления создаются на основе таблиц, других представлений или соединении таблиц с другими таблицами и/или представлениями. Определим таблицы и представления, на основе которых создается представление, как базовые.
Представления могут быть определены как не модифицируемые (read-only) или модифицируемые.
Представления являются не модифицируемыми, если справедливо хотя бы одно из следующих условий:
• первая конструкция FROM в определении представления содержит более одного имени таблицы или представления, т.е. представление соединяет несколько таблиц и/или представлений;
|
|
• в первой конструкции SELECT указано ключевое слово DISTINCT, т.е. в представление включается только одна из нескольких одинаковых строк;
• в первой конструкции SELECT в списке выбора указана агрегатная функция, т.е. колонка логической таблицы, описанной представлением, создается с помощью агрегатной функции.
• внешний подзапрос содержит конструкцию GROUP BY, т.е. строки логической таблицы, описанной представлением, могут быть получены из нескольких строк базовой таблицы или представления, а не из одной строки.
• представление содержит подзапрос, такой, что базовый объект внешнего запроса и подзапроса – одна и та же таблица. Это значит, что таблица или представление, из которых создаваемое представление извлекает данные, также используются для определения строк, которые должны быть выбраны;
• в первой конструкции FROM указано не модифицируемое представление, т.е. представление строится на основе read-only представления.
Не модифицируемое представление не может быть объектом в предложениях INSERT, DELETE, UPDATE. Модифицируемое представление может указываться в предложениях DELETE, INSERT и UPDATE. В этом случае соответствующая операция выполняется с базовой таблицей, на которой определено представление.
Конструкция WITH CHECK OPTION может быть указана только для модифицируемых представлений. В этом случае каждая вставляемая или обновляемая с помощью представления строка должна удовлетворять определению представления, т.е. для нее должны выполняться все условия отбора, указанные в определении представления в конструкциях WHERE. Если данная конструкция опущена, условия, указанные в определении представления проверяться не будут.
|
|
Например, пусть имеется таблица T1 с колонками TId типа INT и TName типа VARCHAR(20), и для нее определено следующее представление:
CREATE VIEW V1
SELECT * FROM T1 WHERE TName LIKE 'A%'
Выполняются следующие два предложения:
INSERT INTO V1 VALUES(12, 'ABC')
и
INSERT INTO V1 VALUES(12, 'BCC')
В этом случае первое предложение будет выполнено успешно, и в таблицу T1 будет вставлена новая строка, тогда как второе предложение завершится с ошибкой, и новые данные в таблицу Т1 вставлены не будут.
Если же представление V1 для данной таблицы будет определено без указания WITH CHECK OPTION:
CREATE VIEW V1