Представления

Представления – это шаблон, через который можно просматривать базу данных. Его можно также назвать виртуальным отношением, которое не существует на самом деле, но которое динамически воспроизводится на основании запроса к одной или нескольким таблиц или к другим (или другому) представлениям. Представления не хранят каких-либо данных. В словаре данных хранится только предложение SELECT того или иного представления.

Синтаксис команды:

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

[(<имя столбца> [,…n ])

[WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}]

AS

< команда SELECT>

[WITH CHECK OPTION];

WITH CHECK OPTION – ограничивает действие команд INSERT и UPDATE. При задании этого предложения они разрешены только в том случае, если они создают строки, которые потом видны в представлении.

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

При создании представления SQL не осуществляет контроль за типом переменных, то есть представление будет создано без генерации сообщения об ошибке, но при попытке осуществить запрос будет сгенерировано сообщение об ошибке.

Ранее отмечалось, что опция WITH CHECK OPTION может ограничить действие команд INSERT и UPDATE, однако существуют и другие ограничения на использовании команд DML.

Команда DELETE запрещена, если представление содержит:

· условие соединения

· групповые функции или предложение GROUP BY

· предложение DISTINCT

· столбец со свойством IDENTITY

Команда UPDATE запрещена всегда, когда запрещена команда DELETE, а также в случае, когда столбцы содержат выражения.

Команда INSERT запрещена всегда, когда запрещена команда UPDATE, а также тогда, когда какой-либо столбец таблицы NOT NULL не содержится в представлении.

После успешного завершения команды CREATE VIEW выдается сообщение

View created (Представление создано).

Представления используются для:

· ограничения доступа к базе данных;

· упрощения запросов;

· сокрытия схемы базы данных.

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

Пример 81

Задача.

Создать представление, предотвращающее ввод информации в таблицу Student.

Решение.

Как уже отмечалось выше, для реализации подобного требования достаточно исключить из представления хотя бы один атрибут с признаком NOT NULL, например IDGroup.

CREATE VIEW VStudentNOINSERT

AS

SELECT

NRecordBook,

INN,

SName,

SPasport,

NPasport,

DataPasport,

NameDeptPasport

FROM Student

Попытка ввести данные через созданное представление

INSERT INTO VStudentNOINSERT

VALUES('050008','1111111117','Ипатов В.И.','8701','192304','01.06.2002', 'УВД г.Ухты');

спровоцирует сообщение об ошибке:

Server: Msg 515

Cannot insert the value NULL into column 'IDGroup', table 'Student.dbo.Student'; column does not allow nulls. INSERT fails.

The statement has been terminated.

Пример 82

Задача.

Создать представление, разрешающее просмотр, ввод и редактирование только данных о студентах группы ИСТ-03 (IDGroup=1) в таблице Student.

Решение.

Создадим представление VStudentNOINSERTIST03, используя опцию WITH CHECK OPTION

CREATE VIEW VStudentNOINSERTIST03

AS

SELECT

NRecordBook,

INN,

SName,

IDGroup,

SPasport,

NPasport,

DataPasport,

NameDeptPasport

FROM Student

WHERE IDGroup =1


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: