Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пак Новакова + / LabSQL3(6-11)ЯрославцеваСоловьёв.doc
Скачиваний:
50
Добавлен:
03.06.2014
Размер:
1.52 Mб
Скачать

Часть 3-7. Использование представлений Упражнение 1 – Создание представления

Представления - это ни что иное, как сохраненные команды SQL, которые иногда называют "виртуальными таблицами". Учтите, что представления не могут хранить данные (кроме индексированных представлений); они только ссылаются на данные, присутствующие в таблицах.

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

  1. Создали новое представление с именем HumanResources.vEmployeeDetails и добавили при определении представления параметр SCHEMABINDING.

  2. Создание представления с опцией SCHEMABINDING блокирует таблицы, на которые ссылается представление и запрещает любые изменения схемы этих таблиц.

Два важных условия при создании представления с опцией SCHEMABINDING:

  • объекты должны указываться вместе с именами их владельцев (имя из двух частей);

  • использование SELECT * не допускается.

CREATE VIEW HumanResources.vEmployeeDetails

With SCHEMABINDING

As

SELECT

e.EmployeeID,

c.Title,

c.FirstName,

c.Suffix,

e.Title AS JobTitle,

c.Phone,

c.EmailAddress,

c.EmailPromotion,

a.AddressLine1,

a.AddressLine2,

a.City,

sp.Name AS StateProvinceName,

a.PostalCode,

cr.Name AS CountryRegionName,

c.AdditionalContactInfo

FROM HumanResources.Employee e

INNER JOIN Person.Contact c

ON c.ContactID=e.ContactID

INNER JOIN HumanResources.EmployeeAddress ea

on e.EmployeeID=ea.EmployeeID

INNER JOIN Person.Address a

ON ea.AddressID=a.AddressID

INNER JOIN Person.StateProvince sp

ON sp.StateProvinceID=a.StateProvinceID

INNER JOIN Person.CountryRegion cr

ON cr.CountryRegionCode=sp.CountryRegionCode

Рис. 1

Упражнение 2 – создание индексированного представления

  1. Выполнили следующую команду:

CREATE UNIQUE CLUSTERED INDEX IX_vEmployeeDetails

ON HumanResources.vEmployeeDetails(EmployeeID)

SQL SERVER позволяет создавать индексы для представлений. Но нужно отметить одну важную особенность - первый индекс представления должен обязательно быть уникальным и кластерным.SQLSERVERне позволит вам создать любой другой индекс, пока представление не будет иметь уникальный кластерный индекс.

Рис. 2

Упражнение 3 – просмотр системной информации о представлениях

  1. Выполнили следующие команды:

EXEC sp_depends 'HumanResources.vEmployeeDetails'

Системная процедура sp_depends перечисляет все сохраненные процедуры, которые обращаются к указанному объекту, или все объекты, к которым обращается указанная процедура.

Рис. 3

EXEC sp_helptext 'HumanResources.vEmployeeDetails'

Чтобы увидеть текст (тело) сохраненного представления, нужно вызвать системную процедуру sp_helptext.

Рис. 4

* Представления - это не что иное, как сохраненные команды SQL. Пользователь может вставлять, удалять или обновлять данные, используя представления в SQL SERVER. Индексы и триггеры также могут быть созданы для представлений, но с ограничением - первый индекс должен быть UNIQUE CLUSTERED INDEX, а триггер должен быть типа INSTEAD OF. Представления и пользовательские функции предназначены практически для одной и той же цели с той лишь разницей, что пользовательские функции могут иметь параметры