CREATE VIEW (Transact-SQL)

Tworzy wirtualnej tabela , których zawartość (kolumny i wiersze) są definiowane przez kwerendę.Aby utworzyć widok danych w jednej lub wielu tabel w bazie danych, należy użyć tej instrukcja .Na przykład widok może być używany dla następujących celów:

  • Aby skoncentrować, uproszczenia i dostosowywanie percepcji każdego użytkownika ma bazy danych.

  • Jako mechanizmu zabezpieczeń, umożliwiając użytkownikom dostęp do danych za pomocą widoku bez udzielania użytkownikom uprawnień do uzyskania bezpośredniego dostępu do podstawowych oprzeć tabel.

  • Aby zapewnić zgodność z poprzednimi zgodny interfejs emulujący tabela , którego Schemat uległ zmianie.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] 
[ WITH <view_attribute> [ ,...n ] ] 
AS select_statement 
[ WITH CHECK OPTION ] [ ; ]

<view_attribute> ::= 
{
    [ ENCRYPTION ]
    [ SCHEMABINDING ]
    [ VIEW_METADATA ]     } 

Argumenty

  • schema_name
    Jest to nazwa schematu, do której należy dany widok.

  • view_name
    Jest to nazwa widoku.Nazwy widoku należy przestrzegać reguł dla identyfikatorów.Określając nazwę właściciela widoku jest opcjonalne.

  • column
    Jest to nazwa używana dla kolumna w widoku.Nazwa kolumna jest wymagane tylko wtedy, gdy kolumna jest pochodną arytmetycznych wyrażenie, funkcjalub stała; po dwóch lub więcej kolumn inaczej mogą mieć taką samą nazwę, zazwyczaj z powodu łączyć; lub po okreolonej kolumna w widoku innym niż kolumna , z którego pochodzi nazwa.Nazwy kolumn można przypisać również w instrukcjaSELECT.

    Jeśli column nie jest określony, kolumny widoku nabycia tych samych nazw jako kolumny w instrukcjaSELECT.

    Ostrzeżenie

    W kolumnach widoku stosowanie uprawnień dla nazwy kolumna poprzez tworzenie WIDOKU lub ALTER VIEW instrukcja, niezależnie od źródło danych.Na przykład, jeśli uprawnienia są przyznawane na SalesOrderID można nazwękolumna w instrukcjaCREATE VIEW ALTER VIEW instrukcja SalesOrderID nazwakolumna z innej kolumna , takie jak OrderReforaz uprawnień związanych z użyciem widoku SalesOrderID.

  • JAK
    Określa akcje, które ma wykonywać widoku.

  • select_statement
    Jest SELECT instrukcja , definiująca widok.instrukcja można użyć więcej niż jednej tabela i innych widoków.Do zaznacz obiekty, do których odwołuje się klauzula SELECT widoku, który jest tworzony wymagane są odpowiednie uprawnienia.

    Widok nie ma być prosty podzbiór wierszy i kolumn jednej określonej tabela.Widok można utworzyć, która korzysta z więcej niż jednej tabela lub innych widoków z klauzula SELECT wszelkich złożoności.

    W definicji indeksowany widok instrukcja SELECT musi być pojedynczej tabela instrukcja lub multitable sprzężenia z opcjonalnym agregacja.

    Klauzule SELECT w definicji widoku nie obejmują:

    • KOMPUTEROWE lub COMPUTE BY klauzule

    • ORDER BY klauzula, chyba że istnieje również TOP klauzula na liście wyboru instrukcjaSELECT

      Ostrzeżenie

      ORDER BY klauzula jest używana tylko do określenia wierszy, które są zwracane przez klauzula TOP w definicji widoku.ORDER BY klauzula nie gwarantuje zamówione wyniki widoku jest badane kwerendami, chyba że ORDER BY określony jest również w samej kwerendzie.

    • Słowa kluczowego INTO

    • Opcja klauzula

    • Odwołanie do tabela tymczasowej lub zmiennej tabela .

    Ponieważ select_statement za pomocą SELECT instrukcjajest prawidłowe, należy użyć <join_hint> i <table_hint> wskazówek, jak określono w klauzulaFROM.Aby uzyskać więcej informacji, zobacz Z języka Transact-SQL) i SELECT (Transact-SQL).

    Funkcje i wiele instrukcji SELECT, oddzielone Unii lub UNION ALL, które mogą być używane w select_statement.

  • ZAZNACZ OPCJĘ
    Zmusza wszystkie instrukcje modyfikacji danych wykonywane w widoku wykonaj kryteria zestaw w select_statement.Podczas modyfikacji wierszy za pomocą widoku Z Sprawdź, czy opcja powoduje, że się, że dane pozostaną widoczne przez Widok po modyfikacji jest zaangażowana.

    Ostrzeżenie

    Wszystkie aktualizacje wprowadzone bezpośrednio do tabel podstawowych nie są weryfikowane względem widoku, nawet jeśli określono OPCJĘ Sprawdź.

  • SZYFROWANIE
    Szyfruje wpisy w sys.syscomments zawierające tekst instrukcjaCREATE VIEW.Korzystanie z szyfrowania uniemożliwia widoku publikowana jako część SQL Server replikacja.

  • SCHEMABINDING
    Wiąże widoku schematu podstawowej tabela lub tabel.Po określeniu SCHEMABINDING tabela bazowa lub tabel nie można modyfikować w sposób, który będzie miało wpływu na definicję widoku.Należy najpierw modyfikacji samej definicji widoku lub porzucone usunąć zależności w tabela , która ma być modyfikowana.Podczas korzystania z SCHEMABINDING, select_statement musi zawierać nazwy dwóch części (schema**.**object) tabele, widoki lub funkcje zdefiniowane przez użytkownika, do których istnieją odwołania.Wszystkie obiekty muszą być w tej samej bazy danych.

    Widoki lub tabele uczestniczące w widoku utworzone za pomocą SCHEMABINDING klauzula nie zostanie usunięty chyba że widok jest usunięte lub zmienione tak, aby go nie ma już powiązanieschematu.W przeciwnym razie Aparat baz danych podnosi błąd.Ponadto instrukcje na tabele uczestniczące w widokach, które mają powiązanie schematu wykonywanie instrukcji ALTER TABLE niepowodzenie, gdy oświadczenia te wpływają na definicję widoku.

  • VIEW_METADATA
    Określa, że wystąpienie SQL Server powróci do DB-biblioteki i ODBC, OLE DB API metadane dotyczące widoku zamiast tabela bazowa lub tabelach, gdy w trybie przeglądania metadane wymagane jest dla kwerendy, która odwołuje się do widoku.W trybie przeglądania metadane jest dodatkowe metadane , wystąpienie SQL Server zwraca te klient-po stronie API.metadane umożliwia klient-po stronie API implementuje aktualizowalna klient-po stronie kursory.W trybie przeglądania metadane zawiera informacje o tabela bazowa kolumn w zestaw wyników należą do.

    Dla widoków utworzone za pomocą VIEW_METADATA trybie przeglądania metadane zwraca nazwę widoku i nie tabela bazowa nazw, gdy opis kolumny z widoku w zestaw wyników.

    Po utworzeniu widoku za pomocą Z VIEW_METADATA, jej kolumn z wyjątkiem timestamp kolumna, są poddający się aktualizacji widok ma WSTAWIAĆ INSTEAD OF lub wyzwalaczy INSTEAD OF UPDATE.Aby uzyskać więcej informacji na temat widoków aktualizowalna zobacz Spostrzeżenia.

Uwagi

Widok można utworzyć tylko w bieżącej bazie danych.Widok może mieć maksymalnie 1024 kolumn.

Podczas badania, korzystając z widoku Aparat baz danych sprawdza, upewnij się, że istnieją wszystkie obiekty bazy danych, do których odwołuje się gdziekolwiek w instrukcja i są prawidłowe w kontekście instrukcjaoraz że oświadczenia modyfikacji danych nie naruszają żadnych reguł integralność danych .Sprawdź, czy nie powiedzie się zwraca komunikat o błędzie.Pomyślne wyboru tłumaczy akcja na akcja przeciwko podstawowej tabela lub tabel.

Jeśli widok zależy od tabela lub widoku, który został usunięty, Aparat baz danych generuje komunikat o błędzie, gdy ktoś próbuje użyć widoku.Jeśli tworzenia nowej tabela lub widoku i struktura tabela nie jest zmieniana z poprzedniego tabela bazowa , aby zastąpić porzucone, widoku ponownie będzie można używać.Zmienia nowej struktury tabela lub widoku widok musi usunięty i utworzony ponownie.

Jeśli widok nie jest tworzony z SCHEMABINDING klauzula sp_refreshview należy uruchomić podczas wprowadzania zmian do obiektów leżących u podstaw widoku, które wpływają na definicję widoku.W przeciwnym razie widoku może dawać nieoczekiwane wyniki , gdy dotyczy kwerenda.

Po utworzeniu widoku informacje o widoku są przechowywane w następujących widoki wykazu: sys.views, sys.columns, i sys.sql_expression_dependencies.Tekst instrukcja CREATE VIEW jest przechowywany w sys.sql_modules katalogu widoku.

Kwerenda, która używa indeksu na widok zdefiniowany z numeric lub float wyrażenia mogą mieć wynik różni się od podobnych kwerendy, który nie korzysta z indeksu w widoku.Różnica ta może być spowodowany zaokrąglania błędy podczas operacji INSERT, DELETE lub UPDATE na tablicach.

Aparat baz danych Zapisuje ustawienia zestawu QUOTED_IDENTIFIER i USTAWIĆ ANSI_NULLS, podczas tworzenia widoku.Te oryginalne ustawienia są używane do analizowania widoku, gdy używany jest widok.W związku z tym każdy klient- ustawieniasesja dla zestawu QUOTED_IDENTIFIER i USTAWIĆ ANSI_NULLS nie wpływają na definicję widoku podczas uzyskiwania dostępu do widoku.

Widoki mogą być aktualizowane

Dane podstawowej tabela bazowa , korzystając z widoku można modyfikować, o ile spełnione są następujące warunki:

  • Wszelkie modyfikacje, w tym instrukcje UPDATE, INSERT i DELETE musi odwoływać się do kolumn z tylko jedną tabela bazowa.

  • Kolumny w widoku modyfikowane bezpośrednio musi odwoływać się podstawowe dane w kolumnach tabela .Kolumny nie może zostać wyprowadzony w inny sposób, takie jak za pomocą następujących:

    • wartość zagregowanafunkcja: AVG, licznik, Suma, MIN, MAX, grupowanie, STDEV, STDEVP, VAR i VARP.

    • Obliczenie.kolumna nie można obliczyć z wyrażenie , które używa innych kolumn.Kolumny, które powstały przy użyciu zestaw operatorów Unii, UNION ALL, połączenie krzyżowe, oprócz i przecinają się obliczenie kwoty i nie są również mogą być aktualizowane.

  • Kolumny modyfikowany nie dotyczy Grupuj według, HAVING lub klauzul DISTINCT.

  • U góry nie jest nigdzie używany w select_statement widoku wraz z opcja Sprawdź klauzula.

Poprzednie ograniczenia stosuje się do wszelkich podkwerendy w klauzula FROM widoku, po prostu, jako że odnoszą się do samego widoku.Ogólnie rzecz biorąc Aparat baz danych musi być w stanie jednoznacznie śledzenia zmian z definicji widoku jedną tabela bazowa.Aby uzyskać więcej informacji, zobacz Modyfikowanie danych przy użyciu widoku.

Ograniczenia poprzednich uniemożliwić modyfikowanie danych bezpośrednio przy użyciu widoku, należy wziąć pod uwagę następujące opcje:

  • ZAMIAST wyzwalaczy

    INSTEAD OF Wyzwalacze mogą być tworzone na widok na widok był aktualizowalny.Zamiast modyfikacji danych instrukcja zdefiniowano wyzwalacz jest wykonywany wyzwalacza INSTEAD OF.Ten wyzwalacz umożliwia użytkownikowi określenie zestaw akcji, które musi przetworzyć modyfikacji danych instrukcja.W związku z tym jeśli istnieje wyzwalacza INSTEAD OF dla widoku danych szczególnych modyfikacji instrukcja (INSERT, UPDATE lub DELETE), jest aktualizowalna za pomocą instrukcjaodpowiedniego widoku.Aby uzyskać więcej informacji na temat zamiast wyzwalaczy, zobacz Projektowanie zamiast wyzwalaczy.

  • Widoki podzielonym na partycje

    Jeżeli widok jest widokiem podzielonym na partycje, widok jest aktualizowalny, z zastrzeżeniem niektórych ograniczeń.Gdy jest potrzebna, Aparat baz danych odróżnia lokalnych widoków podzielonym na partycje jako widoki, w których wszystkie tabele uczestniczące i widoku są w tej samej wystąpienie SQL Serveri rozpowszechniać widoków partycji jako widoki, w których co najmniej jednej z tabel w widoku znajduje się na inny lub zdalnego serwera.

    Aby uzyskać więcej informacji o widokach podzielonym na partycje, zobacz Tworzenie widoków podzielonym na partycje.

Widoki podzielonym na partycje

Podzielonym na partycje widokiem jest widok zdefiniowany przez UNION ALL tabel element członkowski strukturę w taki sam sposób, ale przechowywane osobno jako wielu tabel w obu tego samego wystąpienie z SQL Server lub w grupie autonomicznych wystąpienia SQL Server serwerów, nazywanych federacyjne serwery bazy danych.

Ostrzeżenie

Preferowana metoda partycjonowanie danych lokalnych na jednym serwerze jest za pomocą tabel podzielonym na partycje.Aby uzyskać więcej informacji, zobacz Podzielonym na partycje tabel i indeksów.

W projektowaniu schematu partycjonowanie , musi być wyraźnie jakie dane należy do każdej partycji.Na przykład dane dla Customers tabela jest rozpowszechniany w trzech tabelach element członkowski w trzech miejscach serwera: Customers_33on Server1, Customers_66 on Server2, and Customers_99 on Server3.

Widokiem podzielonym na partycje na Server1 jest zdefiniowany w następujący sposób:

--Partitioned view as defined on Server1
CREATE VIEW Customers
AS
--Select from local member table.
SELECT *
FROM CompanyData.dbo.Customers_33
UNION ALL
--Select from member table on Server2.
SELECT *
FROM Server2.CompanyData.dbo.Customers_66
UNION ALL
--Select from mmeber table on Server3.
SELECT *
FROM Server3.CompanyData.dbo.Customers_99

Ogólnie rzecz biorąc widok jest nazywany widokiem podzielonym na partycje Jeśli następującą postać:

SELECT <select_list1>
FROM T1
UNION ALL
SELECT <select_list2>
FROM T2
UNION ALL
...
SELECT <select_listn>
FROM Tn

Warunki tworzenia widoków partycji

  1. Wybierzlist

    • Wszystkich kolumn w tabelach element członkowski powinien być wybierany w kolumna listy definicji widoku.

    • Kolumny w tej samej pozycji porządkowej każdego select list powinny być tego samego typu, w tym ustawień sortowania.Nie jest wystarczające dla kolumn, które mają być jawnie konwertowany typów jak zwykle w przypadek Unii.

      Ponadto co najmniej jedna kolumna (na przykład <col>) musi znajdować się na listach wyboru w tej samej pozycji porządkowej.To <col> powinny zostać określone w sposób, który tabelach element członkowski T1, ..., Tn mają ograniczenia CHECK C1, ..., Cn zdefiniowane na <col>odpowiednio.

      Ograniczenie C1 zdefiniowanych w tabela T1 musi mieć następującą postać:

      C1 ::= < simple_interval > [ OR < simple_interval > OR ...]
      < simple_interval > :: = 
      < col > { < | > | <= | >= | = < value >} 
      | < col > BETWEEN < value1 > AND < value2 >
      | < col > IN ( value_list )
      | < col > { > | >= } < value1 > AND
      < col > { < | <= } < value2 >
      
    • Ograniczenia powinny być w taki sposób, aby dowolny okreolony wartości z <col> może spełniać, co najwyżej jeden ograniczenia C1, ..., Cn Tak, aby ograniczenia powinny stanowić zestaw rozłącznymi lub porządkuje odstępach czasu.kolumna<col> na zdefiniowane są ograniczenia rozłącznymi nosi partycjonowaniekolumna. Należy zwrócić uwagę, partycjonowanie kolumna mogą mieć różne nazwy w tabelach danej strony.Ograniczenia powinny być w stanie włączony i zaufanych dla spełnienie wspomnianych warunków partycjonowanie kolumna.Jeżeli ograniczenia są wyłączone, ponownie Włącz ograniczenie sprawdzania za pomocą ograniczenia CHECK constraint_name ALTER TABLE i za pomocą opcji Z Sprawdź, aby sprawdzić ich poprawność.

      Poniższe przykłady pokazują ważne zestawów ograniczeń:

      { [col < 10], [col between 11 and 20] , [col > 20] }
      { [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }
      
    • Na liście wybierz tej samej kolumna nie można użyć wiele razy.

  2. Podział kolumna

    • partycjonowaniekolumna jest częścią klucza podstawowego tabela.

    • Nie może być obliczony, tożsamość, domyślny, lub timestamp kolumna.

    • Jeśli jest więcej niż jedno ograniczenie na tej samej kolumna w element członkowski tabela, aparat bazy danych ignoruje wszystkie ograniczenia i nie traktują je przy określaniu, czy widok jest widokiem podzielonym na partycje.Aby spełnić warunki widoku podzielonym na partycje, powinny być tylko jedno ograniczenie partycjonowanie na partycjonowanie kolumna.

    • Nie ma żadnych ograniczeń na aktualizacji partycjonowanie kolumna.

  3. Tabele członka lub tabel podstawowychT1, ..., Tn

    • Tabele mogą być lokalnej tabeli lub tabel z innych komputerów, które są uruchomione SQL Server przyrównuje poprzez nazwę czteroczęściowym lub podstawie OPENDATASOURCE lub OPENROWSET nazwy.Składnia OPENDATASOURCE i OPENROWSET można określić nazwę tabela , ale nie kwerenda przekazująca.Aby uzyskać więcej informacji, zobacz OPENDATASOURCE (Transact-SQL) i OPENROWSET (Transact-SQL).

      Jeśli zdalny jedną lub więcej tabel element członkowski , widok o nazwie rozproszony widok partycjonowany, i zastosować dodatkowe warunki.Są one opisane dalej w tej sekcji.

    • W tej samej tabela nie są wyświetlane dwa razy w zestaw tabel, które są łączone z instrukcjaUNION ALL.

    • Tabele element członkowski nie może mieć indeksy utworzone na kolumny obliczane w tabela.

    • Tabele element członkowski powinien mieć wszystkie ograniczenia klucza podstawowego na taką samą liczbę kolumn.

    • Wszystkie tabele element członkowski w widoku powinny mieć takie same ustawienia uzupełnienie ANSI.Może to być zestaw przy użyciu Opcje użytkownika opcji w sp_configure lub zestawu instrukcja.

Warunki dotyczące modyfikowania danych w widokach podzielonym na partycje

Do sprawozdania, które modyfikują dane w widokach podzielonym na partycje, obowiązują następujące ograniczenia:

  • instrukcja INSERT należy podać wartości dla wszystkich kolumn w widoku, nawet wtedy, gdy element członkowski tablicach domyślne ograniczenie dla tych kolumn lub jeśli pozwalają na wartości null .Dla tych kolumntabela element członkowskizawierających definicje domyślne oświadczeń jawnie nie można użyć słowa kluczowego domyślne.

  • Wartość jest wstawiana do partycjonowanie kolumna powinny spełniać co najmniej jeden z podstawowych warunków ograniczających; w przeciwnym razie wstaw akcja zakończy się niepowodzeniem z naruszenie ograniczenia.

  • Instrukcji UPDATE nie można określić domyślne słowa kluczowego jako wartości w ZESTAWIE klauzula, nawet jeśli kolumna ma wartość DOMYŚLNĄ, zdefiniowane w odpowiedniejtabela element członkowski.

  • Nie można modyfikować kolumny w widoku, które są kolumna tożsamości w jednym lub kilku tabelach element członkowski przy użyciu INSERT lub UPDATE instrukcja.

  • Jeśli jedna z tabel element członkowski zawiera timestamp kolumnadanych nie mogą być modyfikowane przy użyciu INSERT lub UPDATE instrukcja.

  • Jeśli zawiera jedną z tabel element członkowski wyzwalacza lub na AKTUALIZACJĘ KASKADOWO i zestaw NULL i Ustaw domyślne lub na usuwanie kaskadowe i zestaw NULL i Ustaw domyślne ograniczenie, nie można modyfikować widoku.

  • INSERT, UPDATE i DELETE powództwa przeciwko widokiem podzielonym na partycje nie są dozwolone, jeśli self -łączyć z tego samego widoku lub tabele element członkowski w instrukcja.

  • Importowanie danych do widoku podzielonym na partycje luzem nie jest obsługiwany przez bcp lub WSTAWIĆ luzem i WSTAW...Wybierz * sprawozdania Z OPENROWSET(BULK...).Jednak wstawić wiele wierszy do wyświetlenia podzielonym na partycje przy użyciu WSTAW instrukcja.Aby uzyskać więcej informacji, zobacz Eksportowanie danych z lub luzem importowanie danych do widoku luzem.

    Ostrzeżenie

    Aby zaktualizować widok podzielonym na partycje, użytkownik musi mieć Wstawianie, AKTUALIZOWANIE i usuwanie uprawnień na tabelach element członkowski .

Dodatkowe warunki dla rozproszonych widoków podzielonym na partycje

Rozproszone widoków podzielonym na partycje (gdy jeden lub więcej tabel element członkowski są zdalnego) stosuje się następujące warunki dodatkowe:

  • transakcja rozproszona zostanie uruchomiony dla zagwarantowania niepodzielność we wszystkich węzłach dotyczy aktualizacji.

  • Opcja Ustaw XACT_ABORT należy należy zestaw na dla INSERT, UPDATE lub usunąć sprawozdania do pracy.

  • Każdy smallmoney i smalldatetime kolumn w tabelach zdalnego, które odwołania w widoku podzielonym na partycje są mapowane jako money i datetime, odpowiednio.Dlatego odpowiednie kolumny (w tej samej pozycji porządkowej liście select) w tabelach lokalnej powinny być money i datetime.

  • Dowolny serwer połączony w podzielonym na partycje widoku nie może być sprzężenia zwrotnego serwer połączony.Jest to punkty do tego samego wystąpienie serwer połączony SQL Server.

Ustawienie opcji ustaw ROWCOUNT jest ignorowany dla INSERT, UPDATE i DELETE akcje, które obejmować mogą być aktualizowane dzielenia na partycje, zdalne tabele i widoki.

Gdy element członkowski tabel i definicji widoku podzielonym na partycje są w miejscu, SQL Server optymalizator kwerendy buduje inteligentnego plany, które używają kwerend efektywnie dostęp do danych z tabel element członkowski .Z definicji ograniczenie wyboru procesor kwerend mapuje dystrybucji wartości klucz w tabelach element członkowski .Gdy użytkownik wysyła kwerendę, procesor kwerend porównuje mapy do wartości określone w klauzulaWHERE i tworzy plan wykonania z minimalną ilością transfer danych między serwerami element członkowski .W związku z tym mimo że niektóre tabele element członkowski może znajdować się w zdalnych serwerów, wystąpienie SQL Server rozwiązuje tak, aby była minimalna ilość danych rozproszonych do przeniesienia kwerendami rozproszonymi.Aby uzyskać więcej informacji dotyczących sposobu SQL Server rozwiązuje kwerendy dla widoków partycji, zobacz Rozwiązywanie rozproszonych widoków partycji.

Zagadnienia dotyczące replikacji

Tworzenie widoków podzielonych na tabelach element członkowski , które biorą udział w replikacja, następujące kwestie:

  • Jeśli tabele podstawowe są zaangażowane w replikacja scalająca lub transakcyjnych replikacja z aktualizacją subskrypcji, uniqueidentifier kolumna powinien również uwzględniona w liście select.

    Wszystkie akcje WSTAW do widoku podzielonym na partycje należy podać wartość NEWID() dla uniqueidentifier kolumna.Wszelkie operacje aktualizacji przeciwko uniqueidentifier kolumna należy podać NEWID() jako wartości, ponieważ nie można użyć słowa kluczowego domyślne.

  • replikacja aktualizacji przy użyciu widoku jest taka sama jak podczas tabele są replikowane w dwóch różnych baz danych: tabele są obsługiwane przez agentów różnych replikacja i kolejność aktualizacji nie jest gwarantowane.

Uprawnienia

Wymaga uprawnienia tworzenia WIDOKU w bazie danych i ZMIEŃ na schemacie, w którym utworzony widok.

Przykłady

A.Za pomocą prostego tworzenia WIDOKU

Poniższy przykład tworzy widok za pomocą prostej SELECT instrukcja.Widok prosty sposób kombinacji kolumn jest często używane w kwerendach.W tym widoku dane pochodzą z HumanResources.Employee i Person.Person tabel z AdventureWorks2008R2 bazy danych.Dane zawiera informacje o data nazwy i wypożyczanie pracowników Adventure Works Cycles.Widok można utworzyć dla osoby zajmującej się śledzenie pracy rocznice, ale bez podawania tej osobie dostęp do wszystkich danych w tych tabelach.

USE AdventureWorks2008R2 ;
GO
IF OBJECT_ID ('hiredate_view', 'V') IS NOT NULL
DROP VIEW hiredate_view ;
GO
CREATE VIEW hiredate_view
AS 
SELECT p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate
FROM HumanResources.Employee e 
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ;
GO

B.Korzystanie z szyfrowania

W poniższym przykładzie użyto WITH ENCRYPTION opcji i pokazuje obliczane kolumny, zmieniono nazwę kolumny, a wiele kolumn.

USE AdventureWorks2008R2 ;
GO
IF OBJECT_ID ('Purchasing.PurchaseOrderReject', 'V') IS NOT NULL
    DROP VIEW Purchasing.PurchaseOrderReject ;
GO
CREATE VIEW Purchasing.PurchaseOrderReject
WITH ENCRYPTION
AS
SELECT PurchaseOrderID, ReceivedQty, RejectedQty, 
    RejectedQty / ReceivedQty AS RejectRatio, DueDate
FROM Purchasing.PurchaseOrderDetail
WHERE RejectedQty / ReceivedQty > 0
AND DueDate > CONVERT(DATETIME,'20010630',101) ;
GO

C.Korzystanie z opcji wyboru

W poniższym przykładzie pokazano widok o nazwie SeattleOnly odwołuje się pięć tabel i zezwala na dokonywanie modyfikacji danych do zastosowania tylko do pracowników, którzy mieszkają w Seattle.

USE AdventureWorks2008R2 ;
GO
IF OBJECT_ID ('dbo.SeattleOnly', 'V') IS NOT NULL
    DROP VIEW dbo.SeattleOnly ;
GO
CREATE VIEW dbo.SeattleOnly
AS
SELECT p.LastName, p.FirstName, e.JobTitle, a.City, sp.StateProvinceCode
FROM HumanResources.Employee e
    INNER JOIN Person.Person p
    ON p.BusinessEntityID = e.BusinessEntityID
    INNER JOIN Person.BusinessEntityAddress bea 
    ON bea.BusinessEntityID = e.BusinessEntityID 
    INNER JOIN Person.Address a 
    ON a.AddressID = bea.AddressID
    INNER JOIN Person.StateProvince sp 
    ON sp.StateProvinceID = a.StateProvinceID
WHERE a.City = 'Seattle'
WITH CHECK OPTION ;
GO

D.Za pomocą funkcje wbudowane w widoku

Następujący przykład przedstawia definicję widoku, który zawiera wbudowanych funkcja.Podczas korzystania z funkcji, należy określić nazwę kolumna dla kolumnapochodnej.

USE AdventureWorks2008R2 ;
GO
IF OBJECT_ID ('Sales.SalesPersonPerform', 'V') IS NOT NULL
    DROP VIEW Sales.SalesPersonPerform ;
GO
CREATE VIEW Sales.SalesPersonPerform
AS
SELECT TOP (100) SalesPersonID, SUM(TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader
WHERE OrderDate > CONVERT(DATETIME,'20001231',101)
GROUP BY SalesPersonID;
GO

E.Przy użyciu danych podzielonym na partycje

W poniższym przykładzie użyto tabele o nazwach SUPPLY1, SUPPLY2, SUPPLY3, i SUPPLY4.Tabele te odpowiadają tabele dostawcy z czterech urzędów, znajdujące się w różnych krajach.

--Create the tables and insert the values.
CREATE TABLE dbo.SUPPLY1 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 1 and 150),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY2 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 151 and 300),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY3 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 301 and 450),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY4 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 451 and 600),
supplier CHAR(50)
);
GO
INSERT dbo.SUPPLY1 VALUES ('1', 'CaliforniaCorp'), ('5', 'BraziliaLtd');
INSERT dbo.SUPPLY2 VALUES ('231', 'FarEast'), ('280', 'NZ');
INSERT dbo.SUPPLY3 VALUES ('321', 'EuroGroup'), ('442', 'UKArchip');
INSERT dbo.SUPPLY4 VALUES ('475', 'India'), ('521', 'Afrique');
GO
--Create the view that combines all supplier tables.
CREATE VIEW dbo.all_supplier_view
WITH SCHEMABINDING
AS
SELECT supplyID, supplier
FROM dbo.SUPPLY1
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY2
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY3
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY4;