Vytváření a dotazování zobrazení

Dokončeno

Zobrazení jsou uložené dotazy, které můžete vytvořit ve vašich databázích. Jedno zobrazení může odkazovat na jednu nebo více tabulek. A stejně jako tabulka se zobrazení skládá z řádků a sloupců dat. Zobrazení můžete použít jako zdroj pro dotazy stejným způsobem jako tabulky. Zobrazení však neukládají data trvale; definice vašeho zobrazení se vybalí za běhu a probíhá dotazování zdrojových objektů.

Zjevná podobnost mezi tabulkou a zobrazením přináší důležitou výhodu. Aplikace se dají zapsat tak, aby používaly zobrazení místo podkladových tabulek a stíněly aplikaci před prováděním změn v tabulkách. To vám poskytne další vrstvu zabezpečení vašich dat.

Dokud bude zobrazení i nadále prezentovat stejnou strukturu volající aplikaci, aplikace také obdrží konzistentní výsledky. Zobrazení se tak dají považovat za aplikační programovací rozhraní (API) do databáze pro účely načítání dat.

Poznámka:

Zobrazení musí vytvořit vývojář databáze nebo správce s příslušným oprávněním v databázi.

Vytvoř zobrazení.

Chcete-li vytvořit zobrazení, použijte příkaz CREATE VIEW k pojmenování a uložení jednoho příkazu SELECT. Zobrazení byste vytvořili pomocí následující syntaxe:

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

Poznámka:

Klauzule ORDER BY není v definici zobrazení povolena, pokud zobrazení nepoužívá prvek TOP, OFFSET/FETCH nebo FOR XML.

Pokud například chcete vytvořit zobrazení s názvem Sales.CustOrders na základě vlastního příkazu SELECT, který zahrnuje více tabulek, můžete napsat následující dotaz:

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

Všimněte si, že většina kódu v příkladu se skládá z příkazu SELECT. Příkazy SELECT v definicích zobrazení můžou být složité nebo jednoduché, jak chcete.

Dotaz na zobrazení

Pokud chcete dotazovat zobrazení a načíst výsledky z něj, odkazujte na něj v klauzuli FROM příkazu SELECT, jak byste odkazovaly na tabulku. Pokud chcete například vrátit ID zákazníka, měsíc objednávky a množství položek z každé objednávky v zobrazení Sales.CustOrders , můžete spustit následující dotaz:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;