SQL VIEW (vista)

Le viste sono tabelle visive.

Questo capitolo spiega come creare, aggiornare e eliminare le viste.

Frase SQL CREATE VIEW

Cos'è una vista?

In SQL, una vista è una tabella visiva basata sul risultato di una frase SQL.

Le viste contengono righe e colonne, come una tabella reale. I campi delle viste sono campi reali provenienti da una o più tabelle reali del database. Possiamo aggiungere funzioni SQL, WHERE e JOIN alle viste e possiamo anche inviare dati, come se provenissero da un'unica tabella.

Nota:Il design e la struttura del database non sono influenzati dalle funzioni, dalle condizioni o dalle espressioni join all'interno delle viste.

Sintassi di SQL CREATE VIEW

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

Nota:Le viste mostrano sempre i dati più recenti. Ogni volta che un utente consulta una vista, il motore del database ricostruisce i dati utilizzando una frase SQL.

Esempio di SQL CREATE VIEW

Le viste possono essere utilizzate all'interno di una query, di un procedura memorizzata o di un'altra vista. Aggiungendo funzioni, join ecc. alle viste, possiamo fornire agli utenti i dati desiderati in modo preciso.

Il database Northwind di esempio contiene alcune viste preinstallate. La vista "Current Product List" elenca tutti i prodotti attualmente in uso nella tabella Products. Questa vista è creata utilizzando il seguente SQL:

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

Possiamo consultare questa vista sopra:

SELECT * FROM [Current Product List]

Un'altra vista esempio del database Northwind seleziona tutti i prodotti con un prezzo unitario superiore alla media unitaria:

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

Possiamo consultare questa vista come segue:

SELECT * FROM [Products Above Average Price]

Un'altra vista esempio proveniente dal database Northwind calcola il totale delle vendite per ogni categoria nel 1997. Nota che questa vista选取数据自另一个名为 "Product Sales for 1997" 的视图:

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

Possiamo consultare questa vista come segue:

SELECT * FROM [Category Sales For 1997]

Possiamo anche aggiungere condizioni alla query. Ora, dobbiamo solo vedere tutte le vendite della categoria "Beverages":

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

Aggiorna vista SQL

Puoi aggiornare la vista utilizzando la seguente sintassi:

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

Ora, vogliamo aggiungere la colonna "Category" alla vista "Current Product List". Aggiorniamo la vista con il seguente SQL:

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

Revoca vista SQL

Puoi eliminare una vista utilizzando il comando DROP VIEW.

Sintassi di SQL DROP VIEW

DROP VIEW view_name