Вид SQL (VIEW)

Вид данных является визуализацией таблицы.

Эта глава объясняет, как создавать, обновлять и удалять виды данных.

Запрос SQL CREATE VIEW

Что такое вид данных?

В SQL, вид данных является визуализацией результата набора данных SQL-запроса.

Вид данных содержит строки и столбцы, как и реальная таблица. Поля в видах данных представляют собой реальные поля из одной или нескольких таблиц базы данных. Мы можем добавлять SQL-функции, WHERE и JOIN-запросы к видам данных и предоставлять данные, как если бы они пришли из одной таблицы.

Комментарий:Дизайн и структура базы данных не受到影响 функциями, where или join-запросами в видах данных.

Грамматика SQL CREATE VIEW

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

Комментарий:Вид данных всегда показывает последние данные. Whenever the user queries the view, the database engine rebuilds the data using SQL statements.

Пример SQL CREATE VIEW

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

База данных Northwind содержит некоторые видимые таблицы, установленные по умолчанию. Вид данных "Current Product List" показывает все продукты, используемые в таблице Products. Этот вид данных создан следующим SQL:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

Мы можем запросить этот вид данных:

SELECT * FROM [Current Product List]

Другой вид данных из样本ной базы данных Northwind выбирает все продукты из таблицы Products с ценой за единицу выше средней цены:

CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products) 

Мы можем запросить этот вид так:

SELECT * FROM [Products Above Average Price]

Еще один пример визуализации данных из базы данных Northwind, который рассчитывает общее количество продаж каждого типа в 1997 году. Обратите внимание, что этот вид данных выбирает данные из другого вида данных, называемого "Product Sales for 1997":

CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName, Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName 

Мы можем запросить этот вид так:

SELECT * FROM [Category Sales For 1997]

Мы также можем добавить условия к запросу. Сейчас мы просто хотим увидеть все продажи категории "Beverages":

SELECT * FROM [Category Sales For 1997]
WHERE CategoryName='Beverages'

SQL Обновление вида

Вы можете обновить вид с помощью следующего синтаксиса:

Синтаксис SQL CREATE OR REPLACE VIEW
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

Теперь мы хотим добавить столбец "Category" к просмотру "Current Product List". Мы обновим вид следующим SQL:

CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName, Category
FROM Products
WHERE Discontinued=No

SQL Отменить вид

Вы можете удалить вид с помощью команды DROP VIEW.

Синтаксис SQL DROP VIEW

DROP VIEW view_name