Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
16.04.2013
Размер:
1.04 Mб
Скачать
      1. Представления (виды).

...Изменчивей хамелеона.” ПЛАТОН 427-348 гг. до н.э.

В отличие от реальных таблиц, представления не существуют в база данных как некоторый набор хранимых данных. Столкнувшись со ссылкой на представление, программы СУБД находят его определение и преобразуют исходный запрос в эквивалентный запрос к таблицам, использованным в определении представления. После этого модифицированный запрос выполняется. Этот процесс “слияния” называется разрешением представления.

Создание представлений.

CREATE VIEWview_name [(colomn_name[ , ... ]) ]

AS subselect [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]

Есть необъязательная возможность присвоения имени (colomn_name) каждому из столбцов представления.При этом порядок и количество имен совпадает с именами столбцов в результирующей таблице запроса, заданной параметром subselect. Если список имен столбцов опущен, то он определяется по таблице результата запроса. Неоднозначность не допускается. Заданный параметромsubselect подзапрос принято называть определяющим запросом.

Если указана фраза WITH CHECK OPTION, то гарантируется отсутствие строки неудовлетворяющей условиюWHERE определяющего запроса в базовой таблице. Для успешного создания представления требуется иметь привелегию SELECT для всех используемых в определяющем запросе таблиц и привилегию USAGE для всех доменов, используемых в указанных столбцах.

Создание горизонтального представлений.

CREATE VIEW view_name_1

AS SELECT *

FROM table_name

WHERE colomn_name = literal_value;

Горизонтальное представление позволяет ограничить доступ пользователей только определёнными строками, выбранными из одной или нескольких таблиц. В результате выполнения данного оператора будет создано представление под именем m2_staff, содержащие только строки с номером отделения ‘B3’. Руководитель отделения компании тем самым будет видеть только свою информацию через представление, возможно и не подозревая о закрытой для него сводной таблице staff.

Создание вертикального представлений.

CREATE VIEW view_name_2

AS SELECT colomn_name1 , colomn_name2 , ... , colomn_nameN

FROM table_name

WHERE colomn_name = literal_value;

Вертикальное представление позволяет ограничить доступ к информации в таблице по столбцам, выбранным из одной и той же таблицы (список во фразе SELECT). Очевидно, что возможна комбинация горизонтального и вертикального представления (своего рода «подтаблица») для пользователя, как это показано ниже.

CREATE VIEW view_name_2

AS SELECT colomn_name1 , colomn_name2 , ... , colomn_nameN

FROM view_name1

Создание представления с группированием и соединением.

Этот пример представления, которое называется группированным, использует в качестве исходных несколько несколько соединяемых таблиц (т.е. соединенное представление). Одной из важнейших причин использования представлений является стремление упростить многотабличные запросы. Можно построить системы относительно простых запросов вместо того, чтобы писать каждый раз сложные многотабличные запросы (с частичным повторением операций).

CREATE VIEW view_name (view_colomn1, view_colomn2, cnt)

AS SELECT t1.colomn_name1 , t1.colomn_name2 , COUNT(*)

FROM table_name1 t1, table_name2 t2

WHERE t1.colomn_name1= t2.colomn_name2;

GROUP BY t1.colomn_name1, t1.colomn_name2

Обратите внимания, что группировка происходит по двум столбцам одной таблицы, а соединение таблиц – по одному столбцу, семантически общему для них.

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

DROP VIEWview_name [ RESTRICT | CASCADE ]

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

35

Соседние файлы в папке УП_ОПТ2