Создание представлений с помощью 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!