Вопрос 26: Представления
Представление — это виртуальная таблица, содержимое которой определяется запросом.
Преимущества:
- Создает контролируемую (управляемую) среду, позволяет пользователям сосредоточиться на данных.
- Скрывает сложность запросов к данным.
- Обеспечивает безопасность, является объектом промежуточного слоя.
- Организует данные сложных запросов, соединяющих несколько таблиц.
- Производительность View зависит от сложности запроса, лежащего в его основе.
Создание представлений
Синтаксис
CREATE VIEW view_name [(column_list)]
[WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}]
AS select_statement
[WITH CHECK OPTION]
Инструкция CREATE VIEW должна быть единственной инструкцией пакета. (Это означает, что эту инструкцию следует отделять от других инструкций группы посредством инструкции GO.)
Параметр view_name задает имя определяемого представления, а в параметре column_list указывается список имен, которые будут использоваться в качестве имен столбцов представления. Если этот необязательный параметр опущен, то используются имена столбцов таблиц, по которым создается представление. Параметр select_statement задает инструкция SELECT, которая извлекает строки и столбцы из таблиц (или других представлений). Параметр WITH ENCRYPTION задает шифрование инструкции SELECT, повышая таким образом уровень безопасности системы баз данных.
Предложение SCHEMABINDING привязывает представление к схеме таблицы, по которой оно создается. Когда это предложение указывается, имена объектов баз данных в инструкции SELECT должны состоять из двух частей, т.е. в виде schema.db_object, где schema - владелец, а db_object может быть таблицей, представлением или определяемой пользователем функцией.
Пример создания:
USE Northwind
GO
CREATE VIEW dbo.EmployeeView
AS
SELECT LastName, Firstname
FROM Employees
Изменение и удаление представлений
Для изменения определения представления в языке Transact-SQL применяется инструкция ALTER VIEW. Синтаксис этой инструкции аналогичен синтаксису инструкции CREATE VIEW, применяющейся для создания представления.
Пример использования ALTER
GO
ALTER VIEW view_WithoutBudget
AS SELECT Number, ProjectName
FROM Project
WHERE Number >= 'p3';
При удалении представления инструкцией DROP VIEW все другие представления, основанные на удаленном, также удаляются, как показано в примере ниже:
DROP VIEW view_Consultant;
При удалении базовой таблицы представления, основанные на ней другие представления, не удаляются автоматически.