Widok (VIEW) w SQL

Widoki są wizualnymi tabelami.

Ten rozdział wyjaśnia, jak tworzyć, aktualizować i usuwać widoki.

Zapytanie SQL CREATE VIEW

Co to jest widok?

W SQL, widok jest wizualizacją wyników zapytania SQL.

Widoki zawierają wiersze i kolumny, jak prawdziwa tabela. Pola w widoku to pola z prawdziwych tabel w jednej lub kilku bazach danych. Możemy dodać funkcje SQL, WHERE oraz JOIN do widoków i dostarczać dane, jakby pochodziły z pojedynczej tabeli.

Komentarz:Projekt i struktura bazy danych nie są wpływanymi przez funkcje, where lub join w widokach.

Gramatyka SQL CREATE VIEW

CREATE VIEW view_name AS
SELECT nazwa_kolumny(ów)
FROM nazwa_tabeli
WHERE warunek

Komentarz:Widoki zawsze wyświetlają najnowsze dane. Każdy raz, gdy użytkownik zapytuje widok, silnik bazy danych rekonstruuje dane za pomocą zapytań SQL.

Przykład SQL CREATE VIEW

Widoki można używać z wewnętrznych zapytań, procedur przechowalniczych lub innych widoków. Możemy dostarczać użytkownikom dokładne dane, dodając funkcje, joiny itp. do widoków.

Baza danych Northwind zawiera kilka widoków domyślnie zainstalowanych. Widok "Current Product List" wyświetla wszystkie produkty używane z tabeli Products. Ten widok został utworzony za pomocą poniższego SQL:

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

Możemy zapytać o ten widok:

SELECT * FROM [Current Product List]

Kolejny widok z bazy danych Northwind wybiera wszystkie produkty z tabeli Products, które mają cenę jednostkową wyższą niż średnia cena jednostkowa:

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

Możemy zapytać o ten widok w następujący sposób:

SELECT * FROM [Products Above Average Price]

Kolejny przykład widoku z bazy danych Northwind oblicza sumę sprzedaży każdego rodzaju w 1997 roku. Proszę zauważyć, że ten widok wybiera dane z innego widoku o nazwie "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 

Możemy zapytać o ten widok w następujący sposób:

SELECT * FROM [Category Sales For 1997]

Możemy dodać warunki do zapytania. Teraz, chcemy tylko zobaczyć całą sprzedaż kategorii "Beverages":

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

Aktualizacja widoku SQL

Możesz zaktualizować widok za pomocą poniższej gramatyki:

Gramatyka CREATE OR REPLACE VIEW w SQL
CREATE OR REPLACE VIEW view_name AS
SELECT nazwa_kolumny(ów)
FROM nazwa_tabeli
WHERE warunek

Teraz, chcemy dodać kolumnę "Category" do widoku "Current Product List". Zaktualizujemy widok za pomocą poniższego SQL:

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

Unieważnienie widoku SQL

Możesz usunąć widok za pomocą polecenia DROP VIEW.

Gramatyka DROP VIEW w SQL

DROP VIEW view_name