Представления и табличные объекты
Представления или Views представляют виртуальные таблицы. Но в отличии от обычных стандартных таблиц в базе данных представления содержат запросы, которые динамически извлекают используемые данные.
Представления дают нам ряд преимуществ. Они упрощают комплексные SQL-операции. Они защищают данные, так как представления могут дать доступ к части таблицы, а не ко всей таблице. Представления также позволяют возвращать отформатированные значения из таблиц в нужной и удобной форме.
Для создания представления используется команда CREATE VIEW , которая имеет следующую форму:
Например, пусть у нас есть три связанных таблицы:
Теперь добавим в базу данных, в которой содержатся данные таблицы, следующее представление:
То есть данное представление фактически будет возвращать сводные данные из трех таблиц. И после его создания мы сможем его увидеть в узле Views у выбранной базы данных в SQL Server Management Studio:
Теперь используем созданное выше представление для получения данных:
При создании представлений следует учитывать, что представления, как и таблицы, должны иметь уникальные имена в рамках той же базы данных.
Представления могут иметь не более 1024 столбцов и могут обращаться не более чем к 256 таблицам.
Также можно создавать представления на основе других представлений. Такие представления еще называют вложенными (nested views). Однако уровень вложенности не может быть больще 32-х.
Команда SELECT , используемая в представлении, не может включать выражения INTO или ORDER BY (за исключением тех случаев, когда также применяется выражение TOP или OFFSET ). Если же необходима сортировка данных в представлении, то выражение ORDER BY применяется в команде SELECT, которая извлекает данные из представления.
Также при создании представления можно определить набор его столбцов:
Изменение представления
Для изменения представления используется команда ALTER VIEW . Эта команда имеет практически тот же самый синтаксис, что и CREATE VIEW :
Например, изменим выше созданное представление OrdersProductsCustomers:
Удаление представления
Для удаления представления вызывается команда DROP VIEW :
Также стоит отметить, что при удалении таблиц также следует удалить и представления, которые используют эти таблицы.
Просмотр определяемых пользователем функций
Получить сведения об определении или свойствах определяемой пользователем функции в SQL Server можно с помощью среды SQL Server Management Studio или Transact-SQL. Возможность просмотреть определение функции может понадобиться, чтобы понять, как его данные извлекаются из исходных таблиц, или чтобы увидеть данные, определенные функцией.
Если имя объекта, на который ссылается функция, было изменено, необходимо изменить функцию так, чтобы в ее тексте использовалось новое имя. Поэтому, прежде чем переименовать объект, отобразите список его зависимостей, чтобы определить, отразится ли планируемое изменение на каких-либо функциях.
В этом разделе
Перед началом работы
Для получения сведений о функции используется:
Перед началом
безопасность
Permissions
Для использования sys.sql_expression_dependencies в поиске всех зависимостей функции необходимо разрешение VIEW DEFINITION на базу данных и разрешение SELECT на представление sys.sql_expression_dependencies для базы данных. Определения системных объектов, например полученные в OBJECT_DEFINITION, видимы для всех.
Использование среды SQL Server Management Studio
Отображение свойств определяемой пользователем функции
В обозревателе объектов щелкните знак «плюс» рядом с базой данных, содержащей функцию, свойства которой необходимо просмотреть, а затем щелкните знак «плюс», чтобы развернуть папку Программирование .
Чтобы развернуть папку Функции , щелкните знак «плюс» (+).
Щелкните знак «плюс», чтобы развернуть папку, содержащую функцию, для которой нужно просмотреть свойства.
Щелкните правой кнопкой мыши функцию, свойства которой необходимо просмотреть, и выберите пункт Свойства.
Следующие свойства отображаются в диалоговом окне Свойства функции — имя_функции.
База данных
Имя базы данных, содержащей эту функцию.
Server
Имя текущего экземпляра сервера.
Пользователь
Имя пользователя этого соединения.
Дата создания
Дата создания функции.
Выполнить от имени
Контекст выполнения для функции.
имя;
Имя текущей функции.
Схема
Схема, которой принадлежит функция.
Системный объект
Указывает принадлежность функции к системным объектам. Возможные значения: True и False.
Значения NULL по стандарту ANSI
Указывает, был ли объект создан с параметром ANSI NULL.
Зашифрована
Указывает, зашифрована ли функция. Возможные значения: True и False.
Тип функции
Тип определяемой пользователем функции.
Заключенный в кавычки идентификатор
Показывает, был ли объект создан с параметром «заключенный в кавычки идентификатор».
Привязка к схеме
Указывает, привязана ли функция к схеме. Возможные значения: True и False. Дополнительные сведения о функциях, привязанных к схеме, см. в подразделе SCHEMABINDING раздела CREATE FUNCTION (Transact-SQL).
Использование Transact-SQL
Получение определения и свойств функции
В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте и вставьте один из следующих примеров в окно запроса и нажмите кнопку Выполнить.
Получение зависимостей функции
В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.
Получение сведений о представлении
Получить сведения об определении или свойствах представления в SQL Server можно с помощью SQL Server Management Studio или Transact-SQL. Возможность просмотреть определение представления может понадобиться, чтобы понять, как его данные извлекаются из исходных таблиц, или чтобы увидеть данные, определенные представлением.
Если имя объекта, на который ссылается представление, было изменено, необходимо изменить представление так, чтобы в его тексте использовалось новое имя. Следовательно, прежде чем переименовывать объект, следует отобразить зависимости объекта, чтобы определить, повлияет ли предполагаемое изменение на какие-либо представления.
В этом разделе
Перед началом работы
Получение сведений о представлении с помощью следующих средств:
Перед началом
безопасность
Permissions
Для использования sp_helptext для получения определения представления требуется членство в роли public . Для использования sys.sql_expression_dependencies для поиска всех зависимостей в представлении требуется разрешение VIEW DEFINITION в базе данных и разрешение SELECT в sys.sql_expression_dependencies для базы данных. Такие определения системных объектов, как полученные в SELECT OBJECT_DEFINITION, видимы для всех.
Использование среды SQL Server Management Studio
Получение свойств представления с помощью обозревателя объектов
В обозревателе объектов нажмите на значок плюса рядом с базой данных, содержащей представление, свойства которого необходимо просмотреть, а затем нажмите значок плюса, чтобы развернуть папку Представления.
Щелкните правой кнопкой представление, свойства которого необходимо просмотреть, и выберите пункт Свойства.
В диалоговом окне Свойства представления отображаются следующие свойства:
База данных
Имя базы данных, содержащей это представление.
Server
Имя текущего экземпляра сервера.
Пользователь
Имя пользователя этого соединения.
Дата создания
Отображает дату создания представления.
имя;
Имя текущего представления.
Схема
Схема, которой принадлежит представление.
Системный объект
Указывает, является ли представление системным объектом. Возможные значения: True и False.
Значения NULL по стандарту ANSI
Указывает, был ли объект создан с параметром ANSI NULL.
Зашифрована
Указывает, зашифровано ли представление. Возможные значения: True и False.
Заключенный в кавычки идентификатор
Показывает, был ли объект создан с параметром «заключенный в кавычки идентификатор».
Привязка к схеме
Указывает, является ли представление привязанным к схеме. Возможные значения: True и False. Сведения о представлениях, привязанных к схеме, см. в подразделе SCHEMABINDING раздела CREATE VIEW (Transact-SQL).
Получение свойств представления с помощью конструктора представлений
В обозревателе объектов разверните базу данных, содержащую представление, свойства которого необходимо просмотреть, а затем разверните папку Представления .
Щелкните правой кнопкой мыши представление, свойства которого необходимо просмотреть, и выберите пункт Конструктор.
Правой кнопкой мыши щелкните пустое пространство в области диаграмм и выберите Свойства.
На панели Свойства отображаются следующие свойства.
(Имя)
Имя текущего представления.
Имя базы данных
Имя базы данных, содержащей это представление.
Описание
Краткое описание текущего представления.
Схема
Схема, которой принадлежит представление.
Имя сервера
Имя текущего экземпляра сервера.
Привязка к схеме
Предотвращает такие изменения пользователями базовых объектов, задействованных в представлении, в результате которых определение представления становится недействительным.
Детерминированное
Указывает, может ли тип данных для выбранного столбца быть точно определен
Различные значения
Указывает, что запрос будет отфильтровывать повторения в представлении. Этот параметр полезен при использовании только некоторых столбцов из таблицы, притом что эти столбцы могут содержать повторяющиеся значения, или если обработка соединения двух или более таблиц приводит к появлению повторяющихся строк в результирующем наборе. Выбор этого параметра эквивалентен вставке ключевого слова DISTINCT в инструкцию на панели SQL.
Расширение GROUP BY
Указывает, что для представлений доступны дополнительные параметры, основанные на агрегатных запросах.
Выводить все столбцы
Указывает, возвращаются ли в выбранном представлении все столбцы. Этот параметр задается во время создания представления.
Комментарий SQL
Показывает описание инструкций SQL. Чтобы просмотреть описание целиком или изменить его, выберите описание, а затем нажмите на меню с многоточием (…) справа от свойства. Комментарии могут содержать, например, сведения о том, кто использует это представление и когда оно используется.
Спецификация TOP
Разворачивается для отображения свойств Первые, Выражение, Процент и Со связями .
(Верх)
Указывает, что представление будет иметь предложение TOP, возвращающее только первые n строк или первые n процентов строк из результирующего набора. По умолчанию представление возвращает первые 10 строк из результирующего набора. Это поле позволяет изменить число возвращаемых строк или указать другой процент.
Выражение
Указывает, какой процент (если для параметра Процент выбрано значение Да) или какое количество записей (если для параметра Процент выбрано значение Нет) возвращает представление.
Процент
Указывает, что запрос будет включать предложение TOP , возвращающее только первые n процентов строк из результирующего набора.
Со связями
Указывает, что представление включает предложение WITH TIES . WITH TIES полезно, если представление включает предложения ORDER BY и TOP , основанные на процентах. Если этот параметр установлен и пороговое значение процента приходится на середину набора строк с одинаковыми значениями в предложении ORDER BY , то данное представление будет расширено и будет включать все такие строки.
Спецификация Update
Разворачивается для отображения свойств Правила обновления через представление и Параметр проверки .
(Обновление с использованием правил представления.)
Указывает, что все обновления и вставки в представлении будут преобразованы с помощью Microsoft Data Access Components (MDAC) в инструкции SQL, которые ссылаются на представление, а не в инструкции SQL, которые ссылаются непосредственно на базовые таблицы представления.
В некоторых случаях компоненты MDAC представляют операции обновления и вставки представления в виде операций обновления и вставки в базовых таблицах представления. Выбор Обновление с использованием правил представления позволяет гарантировать создание MDAC операций обновления и вставки для самого представления.
Параметр проверки
Указывает, что при открытии этого представления и изменении панели Результаты источник данных проверяет соответствие добавленных или измененных данных предложению WHERE определения представления. Если изменение не соответствует предложению WHERE, отобразится сообщение об ошибке с дополнительными сведениями.
Получение зависимостей представления
В обозревателе объектов разверните базу данных, содержащую представление, свойства которого необходимо просмотреть, а затем разверните папку Представления .
Щелкните правой кнопкой мыши представление, свойства которого необходимо просмотреть, и выберите пункт Просмотреть зависимости.
Выберите Объекты, зависящие от [имя_представления] для отображения объектов, которые ссылаются на представление.
Для отображения объектов, на которые ссылается представление, выберите Объекты, от которых зависит [имя_представления] .
Использование Transact-SQL
Получение определения и свойств представления
В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте один из следующих примеров и вставьте его в окне запроса, а затем нажмите Выполнить.
Azure Synapse Analytics не поддерживает системную хранимую процедуру sp_helptext . Вместо нее используйте представление каталога объектов sys.sql_modules .
Получение зависимостей представления
В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.
SQL Представление
В SQL представление — это виртуальная таблица, основанная на результирующем наборе инструкции SQL.
Представление содержит строки и столбцы, как и настоящая таблица. Поля в представлении — это поля из одной или нескольких реальных таблиц в базе данных.
Вы можете добавить в представление инструкции SQL функций, WHERE и JOIN и представить данные так, как если бы они поступали из одной таблицы.
Синтаксис CREATE VIEW
Примечание: В представлении всегда отображаются актуальные данные! Компонент database engine воссоздает данные, используя инструкцию SQL представления, каждый раз, когда пользователь запрашивает представление.
Примеры SQL CREATE VIEW
Следующий SQL создает представление, в котором отображаются все клиенты из Бразилии:
Пример
Мы можем запросить представление выше следующим образом:
Пример
Следующий SQL создает представление, которое выбирает каждый продукт в таблице «Products» с ценой выше средней цены:
Пример
Мы можем запросить представление выше следующим образом:
Пример
SQL Обновление представления
Представление можно обновить с помощью команды CREATE или REPLACE VIEW.
SQL Синтаксис CREATE OR REPLACE VIEW
Следующий SQL добавляет столбец «City» в представлении "Brazil Customers":