MSDE Altre istruzioni per l'uso (parte 6) - Creare/Eliminare Una Vista
a cura di Sabrina Cosolo (requisiti: Livello intemedio di conoscenza generale)Creare una Vista via codice SQL
Nel comune uso dei database, due delle necessità principali dell'amministratore del database sono quella di poter dare agli utenti i dati di cui hanno bisogno nel modo più rapido e conciso e quella di dare agli utenti solo i dati di loro competenza.
L'esempio classico portato da tutti i manuali è quello degli impiegati: tutti all'interno dell'azienda devono avere accesso all'elenco degli impiegati, alle loro qualifiche, ai numeri di telefono interni, ma solo l'amministrazione deve avere accesso ai loro dati personali, ai dati relativi alle loro paghe e ad altri dati sensibili.
Per predisporre i dati giusti al momento giusto per ciascuno degli utenti, si possono utilizzare le viste che altro non sono che query SQL memorizzate sul server.Di seguito il codice SQL per la creazione di una Vista sul nostro database esempio.
CREATE VIEW dbo.ViBrani AS SELECT dbo.tbBrani.numBrano AS [N.] , dbo.tbBrani.TitoloBrano AS [Titolo Brano] , dbo.tbCd.Titolo AS [Titolo Album] , dbo.tbInterpreti.Nome AS Interprete , dbo.tbCatMusicali.Nome AS [Cat.Musicale] , dbo.tbCate.Nome AS Tipo , dbo.tbCaseDisc.Nome AS [Casa Discografica] FROM dbo.tbBrani INNER JOIN dbo.tbCd ON dbo.tbBrani.idCd = dbo.tbCd.idcd INNER JOIN dbo.tbInterpreti ON dbo.tbBrani.idInterprete = dbo.tbInterpreti.idInterprete INNER JOIN dbo.tbCate ON dbo.tbCd.idCate = dbo.tbCate.idCate INNER JOIN dbo.tbCatMusicali ON dbo.tbBrani.idCatMuscale = dbo.tbCatMusicali.idCatMusicale INNER JOIN dbo.tbCaseDisc ON dbo.tbCd.idCasadisc = dbo.tbCaseDisc.idCasaDiscCome potete notare, la sola cosa che differenzia questo script da una query è la dicitura
CREATE VIEW [owner].NomeVista ASRicordo che NomeVista è un nome che deve essere univoco all'interno del database e deve rispondere alle regole di nomenclatura già citate in precedenza.
Una volta creata, la vista può essere interrogata con una Select esattamente come fosse una tabella del database.
Ricordo anche che è opportuno che, come tutti gli oggetti database, sia creata utilizzando un utente con diritti di amministrazione sul database, come SA o gli appartenenti al gruppo Builtin/Administrators.Eliminare una Vista via codice SQL
Come sempre eliminare è semplice: ecco il codice per eliminare la vista che abbiamo creato:DROP VIEW ViBraniLa sintassi di base del comando è:
DROP VIEW [owner].[NomeVista]Dove owner e NomeVista corrispondono alle definizioni date in precedenza. Al contrario dei vincoli non c'è alcun controllo da parte dell'RDBMS sull'eliminazione della vista, perciò, se quest'ultima fosse usata all'interno di altre viste (normale quando si lavora su Database complessi) oppure all'interno di Stored Procedure, questo non verrebbe controllato e quindi potrebbe dar luogo a risultati indesiderati se non si presta attenzione.
Anche per questi comandi SQL si può utilizzare OSQL.EXE (vedi, anche per i parametri).
La sintassi per chiamare un comando SQL usando OSQL è la seguente:
osql -S Localhost -U SA -P as -i vistesql.sqlun possibile file di input da utilizzare per realizzare uno degli esempi vistesql.sql è un file di testo contenente il comando da eseguire, che è leggermente diverso da quello sopra descritto, riporto la sintassi per la creazione della nostra vista:
USE MusicBox GO CREATE VIEW dbo.ViBrani AS SELECT dbo.tbBrani.numBrano AS [N.] , dbo.tbBrani.TitoloBrano AS [Titolo Brano] , dbo.tbCd.Titolo AS [Titolo Album] , dbo.tbInterpreti.Nome AS Interprete , dbo.tbCatMusicali.Nome AS [Cat.Musicale] , dbo.tbCate.Nome AS Tipo , dbo.tbCaseDisc.Nome AS [Casa Discografica] FROM dbo.tbBrani INNER JOIN dbo.tbCd ON dbo.tbBrani.idCd = dbo.tbCd.idcd INNER JOIN dbo.tbInterpreti ON dbo.tbBrani.idInterprete = dbo.tbInterpreti.idInterprete INNER JOIN dbo.tbCate ON dbo.tbCd.idCate = dbo.tbCate.idCate INNER JOIN dbo.tbCatMusicali ON dbo.tbBrani.idCatMuscale = dbo.tbCatMusicali.idCatMusicale INNER JOIN dbo.tbCaseDisc ON dbo.tbCd.idCasadisc = dbo.tbCaseDisc.idCasaDisc GO QUITIl comando USE MUSICBOX serve a dire al server che dobbiamo lavorare sul Database Musicbox (database di esempio creato nel precedente articolo), Il comando GO esegue i comandi richiesti, il comando QUIT esce da OSQL.EXE che altrimenti si comporta come un interprete comandi e rimane attivo all'interno della finestra console.
La sintassi da usare con OSQL per trasportarvi tutti gli script da noi generati in questa pagina è la seguente:
USE Musicbox GO script da eseguire GO QUIT
<<< Creare/Eliminare Vincoli e Relazioni