Le viste (view). Prima parte.
Cosa sono le viste, come si creano (CREATE VIEW) e quando e' utile utilizzarle.
Una vista e' una rappresentazione logica di una tabella o della combinazione di piu' di esse.
La vista non contiene effettivamente dei dati, li riceve dalle tabelle su cui e' basata. Quindi non occupa spazio su disco e' solo una definizione di una query (una select).
Una volta creata, la vista puo' essere trattata esattamente come una tabella, interrogandola con una select e, con alcune restrizioni, e' possibile anche inserire e modificarne i record. Questi ultimi, sono letti dalle tabelle sulle quali e' stata definita, quindi si puo' affermare che una vista e' dinamica, nel senso che se cambiano i dati sulle tabelle questa e' aggiornata immediatamente.
I vantaggi delle viste sono:
- Forniscono un livello aggiuntivo di sicurezza, permettendo di restringere l'accesso ad alcune colonne o record della tabella.
- Riducono la complessita' di una query.
- Rendono possibile eseguire interrogazioni che altrimenti sarebbe impossibile effettuare con un'unica istruzione.
- Garantiscono l'indipendenza logica dei dati.
- Permettono di visualizzare i dati in modo differente a come sono memorizzati.
Per spiegare meglio questi punti, creiamo alcune viste.
L'istruzione che permette di creare una vista e' la
CREATE VIEW.
Riprendendo le tabelle
impiegati e sedi, creiamo una vista che ci permetta di visualizzare nome,cognome e citta' in cui lavorano i dipendenti:
CREATE VIEW anagrafica
AS
SELECT nome,cognome,citta
FROM IMPIEGATI,SEDI
WHERE sede=id;
Per interrogare la vista ci si comporta come se fosse una tavola:
SELECT * FROM anagrafica;
In fase di creazione e' possibile definire i nomi da associare ad ogni colonna estratta, utilizzando gli alias nella select oppure tramite la create:
CREATE VIEW stipendi_medi
(nome,cognome,stip_medio)
AS
select nome,cognome,avg(stipendio)
FROM.......
Per la terza colonna e' obbligatorio definire un nome, in quanto e' stata applicata una funzione, la media, e quindi altrimenti non avrebbe un nome valido. Quindi ogni volta che si definisce una vista estraendo non una semplice colonna ma una elaborazione di uno o piu' campi si deve obbligatoriamente dare un nome al risultato. Negli altri casi e' facoltativo.
Una vista puo' essere creata andando a prendere i dati da altre viste o tabelle e puo' essere messa in join con altre tabelle o viste.
Per eliminare una vista si utilizza l'istruzione
DROP VIEW:
DROP VIEW anagrafica
Una vista basata su una o piu' viste o tabelle eliminate non viene anch'essa cancellata ma risulta invalida, non puo' essere quindi interrogata fino a quando non sono ripristinati gli oggetti su cui e' costruita.
Nel prossimo intervento vedremo come modificare i dati tramite una vista.