Creare viste ed eseguire query sulle viste
Le viste sono query salvate che è possibile creare nei database. Una singola vista può fare riferimento a una o più tabelle. Analogamente a una tabella, una vista è costituita da righe e colonne di dati. È possibile usare le viste come origine per le query nello stesso modo delle tabelle. Tuttavia, le viste non archiviano in modo permanente i dati; la definizione della visualizzazione viene decompressa in fase di esecuzione e gli oggetti di origine vengono sottoposti a query.
La somiglianza apparente tra una tabella e una vista offre un vantaggio importante. Le applicazioni possono essere scritte per usare le viste anziché le tabelle sottostanti, per proteggere l'applicazione dalle modifiche apportate alle tabelle. In questo modo è disponibile un ulteriore livello di sicurezza per i dati.
Finché la visualizzazione continua a presentare la stessa struttura all'applicazione chiamante, l'applicazione riceverà anche risultati coerenti. In questo modo, le viste possono essere considerate un'API (Application Programming Interface) in un database ai fini del recupero dei dati.
Annotazioni
Le viste devono essere create da uno sviluppatore o un amministratore del database con l'autorizzazione appropriata nel database.
Crea una visualizzazione
Per creare una vista, usare l'istruzione CREATE VIEW per denominare e archiviare una singola istruzione SELECT. È possibile creare una vista usando la sintassi seguente:
CREATE VIEW <schema_name.view_name> [<column_alias_list>]
[WITH <view_options>]
AS select_statement;
Annotazioni
La clausola ORDER BY non è consentita in una definizione di visualizzazione a meno che la vista non usi un elemento TOP, OFFSET/FETCH o FOR XML.
Ad esempio, per creare una vista denominata Sales.CustOrders basata su un'istruzione SELECT personalizzata che include più tabelle, è possibile scrivere la query seguente:
CREATE VIEW Sales.CustOrders
AS
SELECT
O.custid,
DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0) AS ordermonth,
SUM(OD.qty) AS qty
FROM Sales.Orders AS O
JOIN Sales.OrderDetails AS OD
ON OD.orderid = O.orderid
GROUP BY custid, DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0);
Si noti che la maggior parte del codice all'interno dell'esempio è costituita dall'istruzione SELECT. Le istruzioni SELECT all'interno delle definizioni di visualizzazione possono essere complesse o semplici come si desidera che siano.
Eseguire una query su una vista
Per eseguire query su una vista e recuperare i risultati da questa, fai riferimento alla vista nella clausola FROM di un comando SELECT, come faresti con una tabella. Ad esempio, per restituire l'ID cliente, il mese dell'ordine e la quantità di articoli di ogni ordine nella visualizzazione Sales.CustOrders , è possibile eseguire la query seguente:
SELECT custid, ordermonth, qty
FROM Sales.CustOrders;