Skapa och fråga vyer

Slutförd

Vyer är sparade frågor som du kan skapa i dina databaser. En enda vy kan referera till en eller flera tabeller. Precis som i en tabell består en vy av rader och kolumner med data. Du kan använda vyer som källa för dina frågor på ungefär samma sätt som tabeller. Vyer lagrar dock inte data beständigt; definitionen av din vy packas upp vid körning och källobjekten frågas efter.

Den uppenbara likheten mellan en tabell och en vy ger en viktig fördel. Dina program kan skrivas för att använda vyer i stället för de underliggande tabellerna, vilket avskärmar programmet från att göra ändringar i tabellerna. Detta ger dig ytterligare ett säkerhetslager för dina data.

Så länge vyn fortsätter att presentera samma struktur för det anropande programmet får programmet också konsekventa resultat. På så sätt kan vyer betraktas som ett programprogramprogramgränssnitt (API) till en databas i syfte att hämta data.

Anmärkning

Vyer måste skapas av en databasutvecklare eller administratör med lämplig behörighet i databasen.

Skapa en vy

Om du vill skapa en vy använder du CREATE VIEW-instruktionen för att namnge och lagra en enda SELECT-instruktion. Du skapar en vy med hjälp av följande syntax:

CREATE VIEW <schema_name.view_name> [<column_alias_list>] 
[WITH <view_options>]
AS select_statement;

Anmärkning

ORDER BY-satsen tillåts inte i en vydefinition om inte vyn använder ett TOP-, OFFSET/FETCH- eller FOR XML-element.

Om du till exempel vill skapa en vy med namnet Sales.CustOrders baserat på en anpassad SELECT-instruktion som omfattar flera tabeller kan du skriva följande fråga:

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);

Observera att det mesta av koden i exemplet består av select-instruktionen. SELECT-uttrycken i vydefinitionerna kan vara så komplexa eller enkla som du vill att de ska vara.

Utför en sökning i en vy

Om du vill köra frågor mot en vy och hämta resultat från den läser du den i FROM-satsen i en SELECT-instruktion, som du skulle referera till en tabell. Om du till exempel vill returnera kund-ID, ordermånad och antalet artiklar från varje beställning i vyn Sales.CustOrders kan du köra följande fråga:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;