Подання (Views) - створення віртуальної таблиці.

Матеріал представлений на сторінці взятий з ресурсу http://www.w3schools.com/sql/


Подання - це віртуальна таблиця.
В цьому розділі ми переглянемо як створювати, оновлювати та видаляти Подання.

Створення Подання - CREATE VIEW

В SQL Подання це віртуальна таблиця, що базується на результуючих запитах SQL-виразів.

Подання має рядки та колонки, як справжня таблиця. Поля Подання це поля з однієї чи декількох реальних таблиць Бази Даних.

Ви можете додавати SQL-функції, WHERE та JOIN-вирази, щоб переглянути та вивести дані з Подання.

Синтаксис створення Подання CREATE VIEW.

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

Зауважте: Подання завжди показує обновлені дані! Механізм Бази Даних оновлює дані, кожного разу як лише користувач виконав запит.

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

Якщо Ви маєте Базу Даних Northwind Ви тоді можете бачити, що вона має декілька Поданнів встановлених за замовчуванням. (* Примітка. Ресурс http://www.w3schools.com/ в прикладах використовує різні таблиці Бази Даних, Приклад *)
Подання "Current Product List" перелічує всі активні продукти з таблиці "Products"

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

Тепер ми можемо вибрати дані з Подання слідуючим чином:

SELECT * FROM [Current Product List]

Інший приклад Подання з Бази Даних вибирає кожен продукт з таблиці "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]


Інший приклад Подання вираховуває загальну продажу кожної категорії в 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'

Оновлення таблиці Подання - Updating View

Ми можемо оновити Подання використовуючи слідуючий SQL синтаксис:

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

Якщо необхідно добавити стовбчик "Category" до Подання "Current Product List" , тоді можна оновити слідуючим чином:

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


Видалення Подання:

DROP VIEW view_name