Создание представлений
Создание представлений
Представление – это обычный запрос select, имеющий имя и хранящийся в SQL Server
Формат команды создания:
CREATE VIEW имя_представления
WITH атрибуты
AS инструкция SELECT
WITH CHECK OPTION
Возможные атрибуты:
ENCRIPTION – шифрование описания представления при сохранении. SCHEMABINDING – запрет на удаление объектов, используемых в представлений.
VIEW_METADATA – возвращает метаданные о представлении.
WITH CHECK OPTION – служит для создания обновляемых представлений.
Для инструкции select существуют следующие ограничения:
Ключевое слово INTO;
Предложение OPTION;
Ссылки на временные таблицы и табличные переменные.
Цепочки владения
Поскольку представление ссылается на другие объекты, возможны проблемы с правами доступа
V_CustomerAddress владелец UserA
Таблица Customer владелец UserB
Таблица CustomerAddress владелец UserC.
Допустим, пользователь UserA предоставляет пользователю UserD разрешение select на представление V_CustomerAddress, но этого мало – пользователю UserD должны еще предоставить разрешение на таблицы, используемые в представлении.
Упражнение: создание представлений
Бизнес - задача: создать представление, которое возвращает информацию о клиентах проживающих в городе Newport Hills.
Запустите SQL Server Management Studio из меню ПУСК.
Выполните подключение к серверу, нажав кнопку Connect.
Создайте новый запрос, нажав
Измените контекст на базу данных AdventureWorks
Создайте представление:
Create view clients as
select c.FirstName+' '+c.LastName as 'Client name' from
Person.Contact c,
HumanResources.Employee e,
HumanResources.EmployeeAddress ea,
Person.Address p
where e.ContactID=c.ContactID and e.EmployeeID=ea.EmployeeID and ea.AddressID=p.AddressID and p.City='Newport Hills';
Посмотрите результаты:
select * from clients;
Использование представлений для модификации данных
Создание обновляемых представлений
Представления, поддерживающие модификацию данных, называют обновляемыми представлениями.
Хотя представление может быть определено на нескольких таблицах, все модификации, выполняемые посредством этого представления, ограничиваются одной таблицей. Кроме того, все изменения должны непосредственно касаться столбцов таблицы, а не производных столбцов. Таким образом, нельзя модифицировать столбцы, полученные с помощью агрегатных функций или операций над множеством столбцов.
Упражнение: создание обновляемого представления
Запустите SQL Server Management Studio из меню ПУСК.
Выполните подключение к серверу, нажав кнопку Connect.
Создайте новый запрос, нажав
Измените текущую базу данных на master
Создайте представление: create view dbo.v_Customer as select * from Customer where CreditLine>1000 with check option;
Вставьте строчку данных в таблицу: insert into Customer
(
CustomerName, CreditLine
)
Values
(
'1', 1000
)
Посмотрите результаты: select * from Customer select * from dbo.v_Customer
Вставьте строчку данных в представление: