View
Inizialmente parlando di tavole avevamo fatto unadistinzione.
In pratica avevamo detto che potevamo classificare queste indue classi differenti: le TAVOLE di BASE e le TAVOLEVIRTUALI.
Le prime sono quelle che esistono realmente e che quindioccupano uno spazio fisico di memoria.
Queste vengono create con il comando SQL, visto in unesempio iniziale e discusso successivamente, CREATETABLE.
Il secondo tipo di tavole in realta' non esistonofisicamente ma soltanto virtualmente e quindi non occupanospazio nel database.
Questo tipo di tavole vengono definite in SQL come VIEWS(viste) e appaiono all'utente come se fossero reali.
E' possibile creare tavole di questo tipo condeterminate condizioni, ad esempio per fare in modo chel'utente veda solo nella tavola tutti i record di quelliche abitano in una certa citta'.
Una VIEWpuo' essere creata con le parole CREATE VIEW.
Il contenuto di una VIEW viene scritta da uno statementSELECT utilizzato nel seguente modo:
CREATE VIEW PROVA AS SELECT .... ;
Fate attenzione che il nome della VIEW non sia in conflittocon quello di qualche tavola reale.
Le colonne di una VIEW possono essere specificati oppurecopiati mediante i campi specificati in SELECT.
Prendiamo ad esempio:
CREATE VIEW PROVA AS SELECT * FROM TAVOLA1;
Lo statement crea una tavola virtuale, VIEW, chiamata PROVAcontenente tutte le colonne (vedi '*' di SELECT)contenute nella TAVOLA1.
CREATE VIEW PROVA ( NM, IMP ) ASSELECT NOME, IMPORTO FROM TAVOLA1;
Il precedente costrutto invece definisce la struttura dellaVIEW contenente i campi NM e IMP corrispondenti con quelliNOME e IMPORTO della tavola di base TAVOLA1.
I nomi delle colonne di una VIEW devono essere specificatiin modo esplicito nel caso in cui nello statement SELECT cisia una funzione di tipo matematico oppure SUM, MAX ecc.
Ad esempio:
CREATE VIEW PROVA (NM, TOTIMP) ASSELECT NOME, SUM(IMPORTO) FROM TAVOLA1;
Un altro esempio potrebbe essere
CREATE VIEW PROVA (NM, TOTIMP) ASSELECT NOME, (IMPORTO + IVA) FROM TAVOLA;
Sono anche possibili costrutti del tipo:
CREATE VIEW PROVA ASSELECT NOME, IMPORTO FROM TAVOLA1 WHERE CITTA = 'Asti';
Ricordandosi quanto detto a riguardo della natura virtualedella VIEW possiamo analizzare l'esempio precedente perfare alcune considerazioni aggiuntive.
Quando CREATE VIEW viene eseguito lo statementSELECT-FROM-WHERE non e' di fatto eseguito masemplicemente salvato nel catalogo.
L'utente in ogni caso vede la VIEW creata come se fosseuna tavola reale.
In questo caso disporra' di una tavola PROVA chepuo' essere considerata come una finestra nella tavolareale dalla quale la VIEW deriva.
Le operazioni di update della view sono riflesse sullatavola originale anche se di fatto bisogna tenere a mente chenon sempre le VIEW sono updatabili.
Vedremo successivamente il perche' di questaaffermazione dopo aver visto le operazioni di INSERT, UPDATEecc.
L'utilita' di una VIEW e' legata ad alcuniaspetti quali ad esempio la possibilita' di mostrare glistessi dati ad utenti in modo differente oltre ad alcunemetodologie utilizzate per la ristrutturazione deidatabase.
La rimozione di una vista puo' essere eseguitasemplicemente utilizzando il comando:
DROP VIEW NOMEVIEW;