Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
348.doc
Скачиваний:
12
Добавлен:
30.04.2022
Размер:
2.67 Mб
Скачать

8.2.3. Определение представлений

Механизм представлений (view) является мощным средством языка SQL, позволяющим скрыть реальную структуру БД от некоторых пользователей за счет определения представления БД, которое реально является некоторым хранимым в БД запросом с именованными столбцами, а для пользователя ничем не отличается от базовой таблицы БД (с учетом технических ограничений). Любая реализация должна гарантировать, что состояние представляемой таблицы точно соответствует состоянию базовых таблиц, на которых определено представление. Обычно вычисление представляемой таблицы (материализация соответствующего запроса) производится каждый раз при использовании представления.

Оператор определения представления имеет следующий синтаксис:

<определение представления> ::=

CREATE VIEW <имя таблицы> [(<список столбцов представления>)]

AS <спецификация запроса> [WITH CHECK OPTION]

<список столбцов представления> ::= <имя столбца>[{,<имя столбца>}...]

Определяемая представляемая таблица V является изменяемой (т.е. по отношению к V можно использовать операторы DELETE и UPDATE) в том и только в том случае, если выполняются следующие условия для спецификации запроса:

•в списке выборки не указано ключевое слово DISTINCT;

•каждое арифметическое выражение в списке выборки представляет собой одну спецификацию столбца, и спецификация одного столбца не появляется более одного раза;

•в разделе FROM указана только одна таблица, являющаяся либо базовой таблицей, либо изменяемой представляемой таблицей;

•в условии выборки раздела WHERE не используются подзапросы;

•в табличном выражении отсутствуют разделы GROUP BY и HAVING.

Если в списке выборки спецификации запроса имеется хотя бы одно арифметическое выражение, состоящее не из одной спецификации столбца, или если одно имя столбца участвует в списке выборки более одного раза, определение представления должно содержать список имен столбцов представляемой таблицы. Проще говоря, нужно явно именовать столбцы представляемой таблицы, если эти имена не наследуются от столбцов таблиц раздела FROM спецификации запроса.

Требование WITH CHECK OPTION в определении представления имеет смысл только в случае определения изменяемой представляемой таблицы, которая определяется спецификацией запроса, содержащей раздел WHERE. При наличии этого требования не допускаются изменения представляемой таблицы, которые приводят к появлению в базовых таблицах строк, не видимых в представляемой таблице (т.е. таких строк, которые не удовлетворяют условию поиска раздела WHERE спецификации запроса). Если WITH CHECK OPTION в определении представления отсутствует, такой контроль не производится.

Оператор удаления представления имеет формат вида:

DROP VIEW <имя представления>.

Оператор позволяет удалить созданное ранее представление. При удалении представления таблицы участвующие в запросе удалению не подлежат.

8.3. Структура запросов

Сводка синтаксических правил:

<спецификация курсора> ::=

<выражение запросов> [<order by раздел>]

<выражение запросов> ::=

< терм запроса>

| <выражение запросов> UNION [ALL] <терм запроса>

<терм запроса> ::=

<спецификация запроса>

| (<выражение запросов>)

< спецификация запроса> ::=

(SELECT [ALL | DISTINCT] <список выборки> <табличное выражение>)

<оператор выборки> ::=

SELECT [ALL | DISTINCT] <список выборки>

INTO <список переменных ПП> <табличное выражение>

<подзапрос> ::=

(SELECT [ALL | DISTINCT] <выражение, вычисляющее значение>

<табличное выражение>

<табличное выражение> ::=

<from раздел>

[<where раздел>]

[<group by раздел>]

[<having раздел>]

Язык допускает три типа синтаксических конструкций, начинающихся с ключевого слова SELECT: спецификация, оператор выборки и подзапрос. Их основой является синтаксическая конструкция «табличное выражение». Семантика табличного выражения состоит в том, что на основе последовательного применения разделов from, where, group by и having из заданных в разделе from таблиц строится некоторая новая результирующая таблица, порядок следования строк которой не определен и среди строк которой могут находиться дубликаты (т.е. в общем случае таблица-результат табличного выражения является мультимножеством строк).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]