Nézetek létrehozása és lekérdezése

Befejeződött

A nézetek mentett lekérdezések, amelyeket létrehozhat az adatbázisokban. Egyetlen nézet hivatkozhat egy vagy több táblára. A táblázathoz hasonlóan a nézet is sorokból és adatoszlopokból áll. A lekérdezésekhez ugyanúgy használhat nézeteket forrásként, mint a táblákat. A nézetek azonban nem tárolnak tartósan adatokat; a nézet definíciója futásidőben ki van csomagolva, és a forrásobjektumok lekérdezve lesznek.

A táblázat és a nézet közötti látszólagos hasonlóság fontos előnyt jelent. Az alkalmazások a mögöttes táblák helyett nézetek használatára írhatók, így védve az alkalmazást a táblák módosításától. Ez további biztonsági réteget biztosít az adatok számára.

Mindaddig, amíg a nézet továbbra is ugyanazt a struktúrát jeleníti meg a hívó alkalmazás számára, az alkalmazás konzisztens eredményeket is kap. Így a nézetek alkalmazásprogramozási felületnek (API) tekinthetők az adatbázisokhoz adatok beolvasása céljából.

Megjegyzés:

A nézeteket az adatbázis fejlesztőjének vagy rendszergazdájának kell létrehoznia az adatbázisban megfelelő engedélyekkel.

Nézet létrehozása

Nézet létrehozásához a CREATE VIEW utasítással nevezhet el és tárolhat egyetlen Standard kiadás LECT utasítást. A következő szintaxissal hozhat létre nézetet:

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

Megjegyzés:

Az ORDER BY záradék csak akkor engedélyezett a nézetdefiníciókban, ha a nézet TOP, OFF Standard kiadás T/FETCH vagy FOR XML elemet használ.

Ha például egy Sales.CustOrders nevű nézetet szeretne létrehozni egy egyéni Standard kiadás LECT utasítás alapján, amely több táblát is magában foglal, a következő lekérdezést írhatja:

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

Figyelje meg, hogy a példában szereplő kód nagy része a Standard kiadás LECT utasításból áll. A Standard kiadás LECT-utasítások a nézetdefiníciókban olyan összetettek vagy egyszerűek lehetnek, amilyennek szeretné őket.

Nézet lekérdezése

Egy nézet lekérdezéséhez és az eredmények lekéréséhez tekintse meg egy Standard kiadás LECT utasítás FROM záradékában, ahogyan egy táblára hivatkozna. Ha például a Sales.CustOrders nézetben szeretné visszaadni az ügyfélazonosítót, a rendelési hónapot és az egyes rendelésekből származó cikkek mennyiségét, futtassa a következő lekérdezést:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;