Источники информации о представлениях

Обозреватель объектов SQL Server Management Studio

Источники информации о представлениях - student2.ru

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

Представление каталога Отображение сведений о
sys.views Информация обо всех представлениях в базе данных
sys.columns Информация о столбцах таблиц и представлений, типе данных столбцов
sys.sql_expression_dependencies Информация о зависимостях между объектами следующих типов: · привязанные к схеме сущности; · сущности без привязки к схеме; · зависимости на уровне столбцов в сущностях, привязанных к схеме.
sys.sql_modules Содержит текст инструкции SELECT всех представлений

Функции динамического управления

Функция Отображение сведений о
sys.dm_sql_referenced_entities Информация об объектах следующих типов, упоминаемых заданной сущностью: · сущности, привязанные к схеме; · сущности без привязки к схеме; · зависимости уровня столбца, как связанные, так и не связанные со схемами; · определяемые пользователем типы; · коллекции XML-схем; · функции секционирования.

Создание предавлений

Также как и таблица, представление может включать не более 1 024 столбцов.

Создание представления осуществляется при помощи команды CREATE VIEW:

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]

[ WITH [ ENCRYPTION ] [ SCHEMABINDING ] ]

AS select_statement

[ WITH CHECK OPTION ]

schema_name

Имя схемы, которой принадлежит представление.

view_name

Имя представления. Имена представлений должны соответствовать требованиям, предъявляемым к идентификаторам. Указывать имя владельца представления не обязательно.

column

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

Если аргумент column не указан, столбцам представления назначаются такие же имена, которые имеют столбцы в инструкции SELECT.

AS

Определяет действия, которые должны быть выполнены в представлении.

select_statement

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

В аргументе select_statement можно использовать функции и множественные инструкции SELECT, разделенные оператором UNION или UNION ALL.

CHECK OPTION

Обеспечивает соответствие всех выполняемых для представления инструкций модификации данных критериям, заданным при помощи аргумента select_statement. Если строка изменяется посредством представления, предложение WITH CHECK OPTION гарантирует, что после фиксации изменений доступ к данным из представления сохранится, т.е. строка не может быть изменена таким образом, что перестанет подпадать под критерий выборки. Любые обновления, произведенные непосредственно в базовых таблицах представления, не проверяются в контексте представления — даже в том случае, если указано предложение CHECK OPTION.

ENCRYPTION

Затемняет текст инструкции CREATE VIEW хранящийся в базе данных. Непривилегированные пользователи не смогут получить исходный текст триггера.

SCHEMABINDING

Привязывает представление к схеме базовой таблицы или таблиц. Если аргумент SCHEMABINDING указан, нельзя изменить базовую таблицу или таблицы таким способом, который может повлиять на определение представления. Сначала нужно изменить или удалить само представление для сброса зависимостей от таблицы, которую требуется изменить. При использовании аргумента SCHEMABINDING инструкция select_statement должна включать двухкомпонентные (schema.object) имена таблиц, представлений или пользовательских функций, упоминаемых в предложении. Все указанные в инструкции объекты должны находиться в одной базе данных.

Как было рассмотрено в начале модуля, если представление зависит от удаленной таблицы или представления, компонент Database Engine в ответ на попытку использования представления возвращает сообщение об ошибке. Также ошибка произойдет при попытке использования представления, если из базовой таблицы были удалены столбцы, используемые в представлении. SQL Server не препятствует такому изменению или удалению таблиц, участвующих в представлении, и ошибка будет обнаружена только при обращении к представлению. Указание аргумента SCHEMABINDING позволяет избежать подобных ошибок, поскольку представления или таблицы, входящие в представление, созданное при помощи предложения SCHEMABINDING, не могут быть удалены, пока это представление не будет удалено или изменено таким образом, чтобы оно более не было привязано к схеме. В противном случае компонент Database Engine выдаст ошибку. Кроме того, выполнение инструкций ALTER TABLE для таблиц, которые входят в представления, привязанные к схемам, завершается ошибкой, если эти инструкции влияют на определение представления.

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

Пример:

В следующем примере создается представление EmployeeHireDate, содержащее фамилии и имена всех сотрудников, а также даты их приема на работу.

CREATE VIEW EmployeeHireDate

AS

SELECT p.FirstName, p.LastName, e.HireDate

FROM HumanResources.Employee AS e JOIN Person.Person AS p

ON e.BusinessEntityID = p.BusinessEntityID ;

Изменение представлений

Инструкция ALTER VIEW позволяет изменять ранее созданные представления, и имеет синтаксис аналогичный инструкции создания представления CREATE VIEW.

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]

[ WITH [ ENCRYPTION ] [ SCHEMABINDING ] ]

AS select_statement

[ WITH CHECK OPTION ]

Если предыдущее определение представления было создано с использованием предложения WITH ENCRYPTION или CHECK OPTION, эти параметры будут действовать только в том случае, если они включены в инструкцию ALTER VIEW.

Пример:

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

ALTER VIEW HumanResources.EmployeeHireDate

AS

SELECT p.FirstName, p.LastName, e.HireDate

FROM HumanResources.Employee AS e JOIN Person.Person AS p

ON e.BusinessEntityID = p.BusinessEntityID

WHERE HireDate < CONVERT(DATETIME,'20090101',101) ;

GO

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

Удаление представлений из базы производится инструкцией DROP VIEW:

DROP VIEW [ schema_name . ] view_name [ ...,n ]

schema_name

Имя схемы, к которой принадлежит представление.

view_name

Имя удаляемого представления.

Пример:

В следующем примере удаляется представление EmployeeHireDate из реляционной схемы HumanResources.

DROP VIEW HumanResources.EmployeeHireDate;

Наши рекомендации