Создание представлений
Представления можно создавать в ядре СУБД SQL Server с помощью SQL Server Management Studio или Transact-SQL. Представление можно использовать в следующих целях.
- Для направления, упрощения и настройки восприятия информации в базе данных каждым пользователем.
- В качестве механизма безопасности, позволяющего пользователям обращаться к данным через представления, но не предоставляя им разрешений на непосредственный доступ к базовым таблицам.
- Для предоставления интерфейса обратной совместимости, моделирующего таблицу, схема которой изменилась.
ограничения
Представление может быть создано только в текущей базе данных.
Представление может включать не более 1 024 столбцов.
Разрешения
Для выполнения этой инструкции требуется разрешение CREATE VIEW в отношении базы данных и разрешение ALTER в отношении схемы, в которой создается представление.
Использование среды SQL Server Management Studio
- В обозревателе объектовразверните базу данных, в которой необходимо создать новое представление.
- Щелкните правой кнопкой мыши папку «Представления» , а затем выберите «Создать представление. «.
- В диалоговом окне Добавить таблицу выберите один или несколько элементов, которые необходимо включить в новое представление, на одной из следующих вкладок: «Таблицы», «Представления», «Функции» и «Синонимы».
- Нажмите кнопку «Добавить«, а затем нажмите кнопку «Закрыть«.
- На Панели диаграммвыберите столбцы или другие элементы для включения в новое представление.
- На Панели критериеввыберите дополнительные условия сортировки или фильтрации для столбцов.
- В меню «Файл» выберите «Сохранить имя представления».
- В диалоговом окне «Выбор имени» введите имя нового представления и нажмите кнопку «ОК«. Дополнительные сведения о конструкторе запросов и представлений см. в разделе «Инструменты конструктора запросов и представлений» (визуальные инструменты для баз данных).
Использование Transact-SQL
- В обозревателе объектов подключитесь к экземпляру ядра СУБД.
- На стандартной панели выберите пункт Создать запрос.
- Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.
USE AdventureWorks2022; GO CREATE VIEW HumanResources.EmployeeHireDate AS SELECT p.FirstName, p.LastName, e.HireDate FROM HumanResources.Employee AS e INNER JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID; GO -- Query the view SELECT FirstName, LastName, HireDate FROM HumanResources.EmployeeHireDate ORDER BY LastName; GO
Далее
SQL Server CREATE VIEW
Summary: in this tutorial, you will learn how to use the SQL Server CREATE VIEW statement to create new views.
To create a new view in SQL Server, you use the CREATE VIEW statement as shown below:
CREATE VIEW [OR ALTER] schema_name.view_name [(column_list)] AS select_statement; Code language: SQL (Structured Query Language) (sql)
- First, specify the name of the view after the CREATE VIEW keywords. The schema_name is the name of the schema to which the view belongs.
- Second, specify a SELECT statement ( select_statement ) that defines the view after the AS keyword. The SELECT statement can refer to one or more tables.
If you don’t explicitly specify a list of columns for the view, SQL Server will use the column list derived from the SELECT statement.
In case you want to redefine the view e.g., adding more columns to it or removing some columns from it, you can use the OR ALTER keywords after the CREATE VIEW keywords.
SQL Server CREATE VIEW examples
We will use the orders , order_items , and products tables from the sample database for the demonstration.
Creating a simple view example
The following statement creates a view named daily_sales based on the orders , order_items , and products tables:
CREATE VIEW sales.daily_sales AS SELECT year(order_date) AS y, month(order_date) AS m, day(order_date) AS d, p.product_id, product_name, quantity * i.list_price AS sales FROM sales.orders AS o INNER JOIN sales.order_items AS i ON o.order_id = i.order_id INNER JOIN production.products AS p ON p.product_id = i.product_id; Code language: SQL (Structured Query Language) (sql)
Once the daily_sales view is created, you can query data against the underlying tables using a simple SELECT statement:
SELECT * FROM sales.daily_sales ORDER BY y, m, d, product_name; Code language: SQL (Structured Query Language) (sql)
The following shows the output:

Redefining the view example
To add the customer name column to the sales.daily_sales view, you use the CREATE VIEW OR ALTER as follows:
CREATE OR ALTER sales.daily_sales ( year, month, day, customer_name, product_id, product_name sales ) AS SELECT year(order_date), month(order_date), day(order_date), concat( first_name, ' ', last_name ), p.product_id, product_name, quantity * i.list_price FROM sales.orders AS o INNER JOIN sales.order_items AS i ON o.order_id = i.order_id INNER JOIN production.products AS p ON p.product_id = i.product_id INNER JOIN sales.customers AS c ON c.customer_id = o.customer_id; Code language: SQL (Structured Query Language) (sql)
In this example, we specified the column list for the view explicitly.
The following statement queries data against the sales.daily_sales view:
SELECT * FROM sales.daily_sales ORDER BY y, m, d, customer_name; Code language: SQL (Structured Query Language) (sql)
Here is the output:

Creating a view using aggregate functions example
The following statement creates a view named staff_sales those summaries the sales by staffs and years using the SUM() aggregate function:
CREATE VIEW sales.staff_sales ( first_name, last_name, year, amount ) AS SELECT first_name, last_name, YEAR(order_date), SUM(list_price * quantity) amount FROM sales.order_items i INNER JOIN sales.orders o ON i.order_id = o.order_id INNER JOIN sales.staffs s ON s.staff_id = o.staff_id GROUP BY first_name, last_name, YEAR(order_date); Code language: SQL (Structured Query Language) (sql)
The following statement returns the contents of the view:
SELECT * FROM sales.staff_sales ORDER BY first_name, last_name, year;Code language: SQL (Structured Query Language) (sql)

In this tutorial, you have learned how to create a new view by using the SQL Server CREATE VIEW statement.
Пример: Создание представлений базы данных в SQL Server с помощью SQL
Вы можете использовать SQL для создания представлений таблиц и классов пространственных объектов в многопользовательской базе геоданных, чтобы ограничить доступ пользователей к столбцам или записям, или вы можете задать представление для объединения информации из двух таблиц или класса пространственных объектов и таблицы. При включении пространственного столбца в представление пользователи могут визуализировать объекты на карте в клиенте ArcGIS Desktop .
В примерах этого раздела показано, как использовать SQL для создания представлений в базе данных Microsoft SQL Server . Одно из представлений ограничивает доступ пользователя к определенным столбцам. Другое представление применяется для отображения содержания двух различных таблиц. Эти примеры основаны на таблицах со следующими определениями:
Определение таблицы для сотрудников
CREATE TABLE employees ( emp_id integer not null, emp_name nvarchar(32), department smallint not null, hire_date datetime2 not null );
Определение таблицы для регионов
CREATE TABLE regions( objectid integer not null, emp_id integer not null, reg_id integer not null, rname varchar(32), region geometry );
Предоставление прав доступа к таблицам
Если создающий представление пользователь не является владельцем таблицы или таблиц в этом представлении, владелец таблиц должен предоставить ему как минимум право выборки в этих таблицах.
В данном примере таблицы, на базе которых построены представления (employees и regions), принадлежат пользователю gdb. Представление создается пользователем rocket.
GRANT SELECT ON gdb.employees TO rocket; GRANT SELECT ON gdb.regions TO rocket;
Создание представления для ограничения доступа
В этом примере пользователь rocket создает представление (view_dept_201) таблицы employees, чтобы ограничить доступ только к тем строкам, где подразделение соответствует значению 201:
CREATE VIEW view_dept_201 AS SELECT emp_id, name, hire_date FROM gdb.employees WHERE department = 201;
Создание представления для соединения двух таблиц
В этом примере представление emp_regions_view соединяет пространственную таблицу (класс объектов) с непространственной таблицей по столбцу emp_id. Представление включает в себя ObjectID, пространственный столбец (region) и имя региона (rname) из класса объектов regions, а также имя и ID сотрудника из таблицы employees.
CREATE VIEW emp_regions_view AS SELECT (e.emp_name,e.emp_id,r.objectid,r.rname,r.region) FROM employees e, regions r WHERE e.emp_id = r.emp_id;
Предоставление прав доступа к представлениям
Права доступа к представлениям можно предоставлять определенным пользователям, не передавая им права доступа к базовым таблицам (employees и regions). В данном примере пользователю dispatch_mgr предоставлено право доступа к обоим представлениям:
GRANT SELECT ON rocket.view_dept_201 TO dispatch_mgr; GRANT SELECT ON rocket.emp_regions_view TO dispatch_mgr;
Теперь пользователь dispatch_mgr может получить доступ к view_dept_201, чтобы просмотреть записи всех сотрудников отдела 201 и получить доступ к emp_region_view из подключения к базе данных в ArcMap или ArcGIS Pro , чтобы просмотреть все регионы. Когда dispatch_mgr запрашивает в представлении регион, ArcGIS возвращает название региона, а также имя и ID всех работников в этом регионе.
SQL Views
In SQL, a view is a virtual table based on the result-set of an SQL statement.
A view contains rows and columns, just like a real table. The fields in a view are fields from one or more real tables in the database.
You can add SQL statements and functions to a view and present the data as if the data were coming from one single table.
A view is created with the CREATE VIEW statement.
CREATE VIEW Syntax
CREATE VIEW view_name AS
SELECT column1, column2, .
FROM table_name
WHERE condition;
Note: A view always shows up-to-date data! The database engine recreates the view, every time a user queries it.
SQL CREATE VIEW Examples
The following SQL creates a view that shows all customers from Brazil:
Example
CREATE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = ‘Brazil’;
We can query the view above as follows:
Example
SELECT * FROM [Brazil Customers];
The following SQL creates a view that selects every product in the «Products» table with a price higher than the average price:
Example
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, Price
FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);
We can query the view above as follows:
Example
SELECT * FROM [Products Above Average Price];
SQL Updating a View
A view can be updated with the CREATE OR REPLACE VIEW statement.
SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, .
FROM table_name
WHERE condition;
The following SQL adds the «City» column to the «Brazil Customers» view:
Example
CREATE OR REPLACE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = ‘Brazil’;
SQL Dropping a View
A view is deleted with the DROP VIEW statement.
SQL DROP VIEW Syntax
DROP VIEW view_name;
The following SQL drops the «Brazil Customers» view:
