Vytváření a dotazování zobrazení
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;