Представляемая таблица, или просто представление создается с помощью оператора CREATEVIEW, который похож на соответствующий оператор языка SQL/89, но обладает существенно расширенными возможностями. Для полноты мы опишем этот оператор достаточно подробно. Как обычно, начнем со сводки синтаксических правил:
<view definition> ::= CREATE VIEW <table name> [ <left paren> <view column list> <right paren> ] AS <query expression> [ WITH [ <levels clause> ] CHECK OPTION ] <levels clause> ::= CASCADED | LOCAL <view column list> ::= <column name list>
Пояснения:
(a) выражение запроса является обновляемым в том и только в том случае, когда содержит только выражение запроса QE или спецификацию запроса QS и
(i) выражение запроса содержит QS или QS, не включающие выражение запроса без соединения с операторами UNION или EXCEPT;
(ii) выражение запроса содержит QE или QS, не включающие терм запроса без соединения с оператором INTERSECT;
(iii) QE или QS являются обновляемыми;
(b) спецификация запроса QS является обновляемой в том и только в том случае, когда
(i) в QS не специфицировано DISTINCT;
(ii) каждое выражение, содержащееся в списке выборки QS, состоит из ссылки на столбец, и ни одна ссылка на столбец не появляется более одного раза;
(iii) раздел FROM табличного выражения, непосредственно входящего в QS, содержит в точности одну ссылку на таблицу, указывающую на базовую таблицу или на обновляемую порождаемую таблицу;