Tworzenie widoków zapytań i tworzenie ich
Widoki są zapisywane zapytania, które można tworzyć w bazach danych. Pojedynczy widok może odwoływać się do co najmniej jednej tabeli. Podobnie jak w przypadku tabeli widok składa się z wierszy i kolumn danych. Widoki można używać jako źródła dla zapytań w taki sam sposób jak tabele. Widoki nie przechowują jednak danych w sposób trwały; definicja widoku jest rozpakowana w czasie wykonywania, a zapytania dotyczące obiektów źródłowych.
Pozorne podobieństwo między tabelą a widokiem zapewnia ważną korzyść. Aplikacje można zapisywać w celu używania widoków zamiast tabel bazowych, co chroni aplikację przed wprowadzaniem zmian w tabelach. Zapewnia to dodatkową warstwę zabezpieczeń danych.
Jeśli widok będzie nadal przedstawiać tę samą strukturę aplikacji wywołującej, aplikacja będzie również otrzymywać spójne wyniki. W ten sposób widoki można traktować jako interfejs programowania aplikacji (API) do bazy danych na potrzeby pobierania danych.
Uwaga
Widoki muszą być tworzone przez dewelopera bazy danych lub administratora z odpowiednimi uprawnieniami w bazie danych.
Utwórz widok
Aby utworzyć widok, użyj instrukcji CREATE VIEW, aby nazwać i zapisać pojedynczą instrukcję SELECT. Widok należy utworzyć przy użyciu następującej składni:
CREATE VIEW <schema_name.view_name> [<column_alias_list>]
[WITH <view_options>]
AS select_statement;
Uwaga
Klauzula ORDER BY nie jest dozwolona w definicji widoku, chyba że widok używa elementu TOP, OFFSET/FETCH lub FOR XML.
Aby na przykład utworzyć widok o nazwie Sales.CustOrders na podstawie niestandardowej instrukcji SELECT obejmującej wiele tabel, możesz napisać następujące zapytanie:
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);
Zwróć uwagę, że większość kodu w przykładzie składa się z instrukcji SELECT. Instrukcje SELECT wewnątrz definicji widoku mogą być tak złożone lub proste, jak chcesz, aby były.
Wykonywanie zapytań względem widoku
Aby wykonać zapytanie dotyczące widoku i pobrać z niego wyniki, należy odwołać się do niego w klauzuli FROM instrukcji SELECT, jak można odwoływać się do tabeli. Aby na przykład zwrócić identyfikator klienta, miesiąc zamówienia i ilość elementów z każdego zamówienia w widoku Sales.CustOrders , można uruchomić następujące zapytanie:
SELECT custid, ordermonth, qty
FROM Sales.CustOrders;