Tworzenie widoków zapytań i tworzenie ich

Ukończone

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;