Создание представлений с помощью Transact-SQL



 

Для создания представления используется команда CREATE VIEW, правом ее выполнения обладают члены ролей sysadmin , db _owner , db _dlladmin:

 

CREATE VIEW ИмяПредставления [(поле [,...n])]

[WITH ENCRYPTION]

AS

ЗапросВыборки

 

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

ЗапросВыборки представляет собой оператор SELECT, параметры которого и определяют содержимое представления. Имена полей представления задаются либо с помощью псевдонимов в операторе выборки, либо указываются в параметре поле.

Например, создадим представление, содержащее лишь такую информацию о сотрудниках компании AdventureWorks, как: должность и логин сотрудника, дата рождения.

 

CREATE VIEW InfoEmployees ([Номер], [Фамилия], [Дата рождения]) AS

SELECT BusinessEntityID, JobTitle + '(' + LoginID + ')',

 CONVERT (char(10), BirthDate, 104)

FROM HumanResources.Employee

 

Для просмотра содержимого проекции выполняется следующий запрос:

 

SELECT * FROM InfoEmployees

 

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

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

 

CREATE VIEW OnlineVendors

AS

SELECT [Name]

FROM Purchasing.Vendor

WHERE PurchasingWebServiceURL IS NOT NULL

 

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

 

Например, создадим представление, отображающее суммарную стоимость каждого заказа с указанием заказчика и его номера:

 

CREATE VIEW InfoOrders

AS

SELECT FirstName + ' ' + LastName as [Название компании],

 SalesOrderHeader.SalesOrderID as [Номер заказа],

 Convert (money, sum(UnitPrice*OrderQty*(1-UnitPriceDiscount)),0) as [Итог]

FROM (Person.Contact INNER JOIN Sales.SalesOrderHeader

ON Contact.ContactID=SalesOrderHeader.ContactID)

INNER JOIN Sales.SalesOrderDetail

ON SalesOrderHeader.SalesOrderID=SalesOrderDetail.SalesOrderID

GROUP BY SalesOrderHeader.SalesOrderID, FirstName + ' ' + LastName

 

Следует помнить, что использование представлений не способствует производительности. Обращение к представлению вызывает выполнение его внутреннего кода, таким образом, в лучшем случае представления НЕ снизят производительность БД.

 

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

 

Созданное представление может быть изменено выполнением команды ALTER VIEW, имеющей аналогичный синтаксис команде CREATE VIEW. Для удаления представления необходимо выполнить команду:

 

DROP VIEW ИмяПредставления

 

Для получения информации о представлении используется хранимая процедура: sp _help ИмяПредставления, которая отображает список полей представления с описанием их свойств. Для отображения кода, с помощью которого создано представление, можно воспользоваться хранимой процедурой: sp _helptext ИмяПредставления.

Список объектов, от которых зависит представление, может быть получен выполнением хранимой процедуры: sp _depends ИмяПредставления.

Краткие итоги. Рассмотрены хранимые процедуры и представления, а также основные команды SQL для создания, использования и управления этими объектами.

 


Дата добавления: 2021-01-21; просмотров: 76; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!