SQL VIEW (vy)

Vyer är visuala tabeller.

Detta kapitel förklarar hur man skapar, uppdaterar och tar bort vyer.

SQL CREATE VIEW-sats

Vad är en vy?

I SQL är en vy en visualisering av en resultatuppsättning baserad på en SQL-sats.

Vyer innehåller rader och kolumner, precis som en verklig tabell. Fälten i en vy är från en eller flera verkliga tabeller i databasen. Vi kan lägga till SQL-funktioner, WHERE och JOIN-satser till vyer och leverera data som om de kom från en enda tabell.

Kommentar:Databasens design och struktur påverkas inte av funktioner, where eller join-satser i vyer.

SQL CREATE VIEW-syntax

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

Kommentar:Vyer visar alltid de senaste data. Varje gång en användare frågar efter en vy, bygger databasmotorn om data med hjälp av SQL-satser.

SQL CREATE VIEW-exempel

Vi kan använda en vy från en fråga, en lagrad procedure, eller från en annan vy. Genom att lägga till funktioner, join och så vidare till en vy kan vi exakt leverera de data vi vill till användaren.

Northwind-mönsterdatabasen har några förinstallerade vyer. Vyn "Current Product List" visar alla produkter som används från Products-tabellen. Denna vy skapas med följande SQL:

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

Vi kan fråga efter denna vy:

SELECT * FROM [Current Product List]

En annan vy i Northwind-mönsterdatabasen väljer alla produkter med en enhetspris över genomsnittet från Products-tabellen:

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

Vi kan fråga så här om den ovanstående vyn:

SELECT * FROM [Products Above Average Price]

En annan vyexempel från Northwind-databasen räknar ut den totala försäljningen av varje sorts produkt under 1997.Observera att denna vy hämtar data från en annan vy som kallas "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 

Vi kan fråga så här om den ovanstående vyn:

SELECT * FROM [Category Sales For 1997]

Vi kan också lägga till villkor till vår fråga. Nu behöver vi bara se på försäljningen av alla produkter i kategorin "Beverages":

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

SQL Uppdatera vy

Du kan använda följande syntax för att uppdatera vyn:

SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT kolumnnamn(s)
FROM tabellnamn
WHERE villkor

Nu vill vi lägga till "Category"-kolumnen till vyn "Current Product List". Vi kommer att uppdatera vyn med följande SQL:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProduktNamn,Kategori
FROM Products
WHERE Avbrutet=Nej

SQL Ångra vy

Du kan använda DROP VIEW-kommandot för att ta bort en vy.

SQL DROP VIEW Syntax

DROP VIEW view_name