Weergaven maken en er query's op uitvoeren
Weergaven zijn opgeslagen zoekopdrachten die u kunt maken in uw databases. Eén weergave kan verwijzen naar een of meer tabellen. En net als een tabel bestaat een weergave uit rijen en kolommen met gegevens. U kunt weergaven als bron voor uw query's op ongeveer dezelfde manier gebruiken als tabellen. Weergaven slaan echter geen gegevens permanent op; de definitie van uw weergave wordt tijdens runtime uitgepakt en de bronobjecten worden opgevraagd.
De schijnbare gelijkenis tussen een tabel en een weergave biedt een belangrijk voordeel. Uw toepassingen kunnen worden geschreven om weergaven te gebruiken in plaats van de onderliggende tabellen, zodat de toepassing geen wijzigingen kan aanbrengen in de tabellen. Dit biedt u een extra beveiligingslaag voor uw gegevens.
Zolang de weergave dezelfde structuur blijft presenteren aan de aanroepende toepassing, ontvangt de toepassing ook consistente resultaten. Op deze manier kunnen weergaven worden beschouwd als een API (Application Programming Interface) voor een database voor het ophalen van gegevens.
Opmerking
Weergaven moeten worden gemaakt door een databaseontwikkelaar of beheerder met de juiste machtiging in de database.
Een weergave maken
Als u een weergave wilt maken, gebruikt u de instructie CREATE VIEW om één SELECT-instructie een naam te geven en op te slaan. U maakt een weergave met behulp van de volgende syntaxis:
CREATE VIEW <schema_name.view_name> [<column_alias_list>]
[WITH <view_options>]
AS select_statement;
Opmerking
De ORDER BY-component is niet toegestaan in een weergavedefinitie, tenzij in de weergave een TOP-, OFFSET-/FETCH- of FOR XML-element wordt gebruikt.
Als u bijvoorbeeld een weergave met de naam Sales.CustOrders wilt maken op basis van een aangepaste SELECT-instructie die meerdere tabellen omvat, kunt u de volgende query schrijven:
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);
U ziet dat de meeste code in het voorbeeld bestaat uit uw SELECT-instructie. De SELECT-instructies in weergavedefinities kunnen net zo complex of eenvoudig zijn als u wilt.
Een query uitvoeren op een weergave
Als u een query wilt uitvoeren op een weergave en resultaten ervan wilt ophalen, raadpleegt u deze in de FROM-component van een SELECT-instructie, zoals u zou verwijzen naar een tabel. Als u bijvoorbeeld de klant-id, de ordermaand en het aantal artikelen uit elke order in de weergave Sales.CustOrders wilt retourneren, kunt u de volgende query uitvoeren:
SELECT custid, ordermonth, qty
FROM Sales.CustOrders;