Le viste (view) in SQL

Per creare una vista nel linguaggio SQL utilizzo il comando CREATE VIEW

CREATE VIEW nomevista [(lista attributi)]
AS selectSQL

Il primo parametro è il nome della vista, seguito eventualmente dalla lista degli attributi.

Il secondo parametro è l'interrogazione che fornisce i dati alla vista.

Cosa sono le viste? Nel linguaggio SQL le viste sono tabelle virtuali, il cui contenuto dipende da una o più tabelle del database. Sono un'alternativa alle interrogazioni ricorrenti.

Il numero degli attributi della vista deve coincidere con il numero di attributi estratti dall'interrogazione.

I nomi degli attributi possono anche essere diversi.

Un esempio pratico

Ho la tabella Meteo con le temperature delle principali città italiane.

una tabella SQL

Ogni giorno ho l'esigenza di vedere le temperature a Roma.

Potrei fare una SELECT ogni giorno.

SELECT temperatura FROM meteo WHERE città="Roma"

Sarebbe però un'operazione ripetitiva e lunga.

In alternativa, posso creare una vista con CREATE VIEW che visualizza soltanto le righe della tabella Meteo in cui l'attributo città è Roma.

CREATE VIEW meteoRoma (città. temperatura)
AS ( SELECT città, temperatura FROM `meteo` WHERE Città='Roma' )

Il risultato della vista è la seguente tabella dinamica

la tabella SQL

In questo modo evito di dover scrivere la select ogni giorno.

Mi basta aprire la vista e ottengo lo stesso risultato.

Nota. La tabella dinamica non esiste. Richiama le informazioni presenti nella tabella Meteo. Pertanto, ogni volta che apro la vista sono visualizzate le informazioni aggiornate.

E' un semplice esempio per rendere l'idea.

L'utilità delle viste si apprezza soprattutto quando la query è complessa e coinvolge molte tabelle.

A cosa servono le viste

Le viste sono uno strumento di sintesi per visualizzare in un unico schema degli attributi presi da più tabelle.

Sono utili perché evitano di dover scrivere delle query ricorrenti in linguaggio SQL.

I dati restano contenuti nelle rispettive tabelle. Non sono copie.

Pertanto, le informazioni visualizzate nelle viste sono sempre aggiornate.

Cosa accade se modifico i dati nella vista

Una modifica ai dati nella vista si propaga anche nella tabella di base, quella da cui dipende la vista.

Nella clausola WITH l'opzione di default è CASCADED.

CREATE VIEW nomevista
AS selectSQL
WITH [ Local | Cascaded ] CHECK OPTION

Tuttavia, non sempre è possibile modificare i dati sulla vista.

In genere l'aggiornamento sulla tabella di base è possibile solo se una riga della vista corrisponde a una riga della vista.

Nota. Ogni DBMS fissa delle regole apposite. Pertanto, l'aggiornamento vista -> tabella di base dipende anche dall'ambiente SQL in cui si lavora.

Le interrogazioni SELECT sulle viste

Sulle viste posso fare anche delle interrogazioni tramite il comando SELECT come se fossero delle tabelle.

Questo permette di aumentare il potere espressivo del linguaggio SQL.

Esempio

Ho la tabella Meteo

una tabella SQL

Creo una vista per visualizzare le città con più d 30° gradi.

La chiamo Meteo30

CREATE VIEW Meteo30
AS ( SELECT * FROM Meteo WHERE temperatura>30 )

Il risultato è la seguente tabella dinamica

la vista

Voglio trovare la temperatura minore tra tutte quelle con più di 30°.

Per farlo scrivo un'interrogazione sulla vista Meteo30.

SELECT città, MIN(temperatura) FROM Meteo30

Il risultato finale è

il risultato dell'interrogazione

In alcuni casi l'uso delle viste semplifica la costruzione delle interrogazioni nidificate.

Per ottenere lo stesso risultato con una select nidificata avrei dovuto scrivere

SELECT T1.Città, min(T1.mintemp) FROM ( SELECT città, min(temperatura) AS mintemp FROM meteo GROUP BY Temperatura HAVING mintemp>30 ) AS T1

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

SQL