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

 

 

Цель работы– изучение назначения представлений баз данных, синтаксиса и семантики команд языка Transact-SQL для их создания, изменения и удаления, системных хранимых процедур для получения информации о представлениях, а также приобретение навыков их создания с помощью графических средств утилиты Enterprise Manager и мастера Create View Wizard.

 

Представление (View) для пользователей баз данных выглядит как таблица, но при этом оно не содержит данных, а лишь представляет данные, расположенные в одной или нескольких таблицах. Таким образом, представления – это виртуальные таблицы, определяемые запросом на языке Transact-SQL. Подобно реальным таблицам представления содержат именованные столбцы и строки с данными, которые они динамически выбирают из таблиц и предлагают эти данные пользователю для просмотра. Представления часто применяются для ограничения доступа к конфеденциальным данным в таблицах баз данных. Когда в представление не включается столбец исходной таблицы, то считают, что на таблицу наложен вертикальный фильтр. Если в

SQL – запросе установлено одно или несколько условий для выборки строк, то считают,

что на таблицу наложен горизонтальный фильтр.

Представление может выбирать данные из других представлений, которые, в свою очередь, могут также основываться на представлениях или таблицах. Вложенность представлений не должна превышать 32. Представления можно создавать, используя базы данных одного сервера (текущего). Максимальное количество столбцов в представлении равно 1024. Представление не может ссылаться на временные таблицы. Кроме того, нельзя создавать временное представление.

Для представления нельзя определить ограничения целостности, триггеры, правила, или умолчания, а также создать обычный или полнотекстовый индекс.


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

Как и для таблиц, для представлений можно определить следующие права доступа:

 

SELECT – просмотр данных;

INSERT – добавление данных через представления; UPDATE – изменение данных в исходных таблицах; DELETE –удаление данных в исходных таблицах.

 

Чтобы иметь возможность создавать представления, надо обладать правами владельца баз данных и иметь соответствующие разрешения для любых таблиц или представлений, упомянутых в запросе на создание этого представления.

Для создания представления используется следующая команда Transact-SQL:

 

CREATE VIEW [Имя базы данных.] [имя владельца.]

Имя представления

[(Имя колонки [,... n])] [WITH{ENCRYPITION\SHEMABINDING\

VIEW_METADATA} AS Команда SELECT

[WITH CHECK OPTION]

 

Если в команде не заданы имена колонок представления , то они определяются по именам выбираемых колонок в команде SELECT. Параметр ENCRYPTION скрывает код создания этого представления, а параметр SHEMABINDING обеспечивает контроль структуры исходных объектов, к которым обращается оператор SELECT. Опция WITH CHEC OPTION не позволяет изменять строки таким образом, чтобы они исчезли при отборе командой SELECT.

 

Задание 1.Создать представление auth, ссылающегося на таблицу authors базы данных Pubs и содержащего идентификационный номер автора au_lname и телефон phone, при этом отобразить только авторов из Калифорнии ‘СА’ или авторов, не подписавших контракт с издательством, выполнив следующую команду:

 

CREATE VIEW auth

WITH SHEMABINDING

AS SELECT au_id, au_lname, au_fname, phone

FROM dbo. Authors

WHERE state = ‘CA’ OR contract = 0

WITH CHECK OPTION.

 

Задание 2.Создать представление report, которое ссылается на представление auth и таблицы titleauthor и titles и в котором выводятся имя автора au_fname, фамилия автора au_lname и сокращенные названия написанных им книг, выполнив команду:

 

CREATE VIEW report

AS SELECT [Фамилия] = CAST (au_lname aschar(10)), [Имя] = CAST(au_fname aschar(10)), [Название книги] =

CAST (title as char(30)) +

CASE WHEN LEN (title) >30 THEN ‘...’ END FROM auth a, titleauthor ta, titles t

WHERE ta.au_id = a.au_id AND


t.title_id = ta .title_id.

 

Задание 3.Создать представление auth, рассмотренное в первом задании, с помощью графических средств утилиты Enterprise Manager.

 

Задание 4.Создать представление report, рассмотренное во втором задании, с помощью мастера Create View Wizard.

 

Задание 5.Сопоставить запросы, полученные автоматически в заданиях 3и 4, с запросами соответственно в первом и втором заданиях. Модифицировать запросы с помощью команды ALTER VIEW и получить справочную информацию об этих представлениях с помощью процедур sp_help, sp_helptexst и sp_depends.