Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2016:Utwórz widok

W SQL Server zapytania można wykonywać jako widoki. Widoki są korzystne z wielu powodów, w tym bezpieczeństwa, użyteczności i wygody.

W SQL Server widok to wirtualna tabela, której zawartość jest definiowana przez zapytanie. Jest to w zasadzie wstępnie napisane zapytanie, które jest przechowywane w bazie danych.

Widok składa się z SELECT instrukcji, a kiedy uruchamiasz zapytanie względem widoku, widzisz jego wyniki tak, jak podczas otwierania tabeli. Widoki są określane jako tabele wirtualne, ponieważ mogą gromadzić dane z wielu tabel, a także agregować dane i przedstawiać je tak, jakby była to pojedyncza tabela.

Zalety widoków

Widok może być przydatny, gdy istnieje wielu użytkowników o różnych poziomach dostępu, z których wszyscy muszą widzieć części danych w bazie danych (ale niekoniecznie wszystkie dane). Widoki mogą wykonywać następujące czynności:

  • Ogranicz dostęp do określonych wierszy w tabeli
  • Ogranicz dostęp do określonych kolumn w tabeli
  • Połącz kolumny z wielu tabel i prezentuj je tak, jakby były częścią jednej tabeli
  • Przedstawiaj informacje zbiorcze (takie jak wyniki COUNT() funkcja)

Jak utworzyć widok

Widok tworzysz za pomocą CREATE VIEW instrukcja, po której następuje SELECT oświadczenie.

CREATE VIEW ViewName 
AS
SELECT ...

Utworzymy teraz widok z naszego poprzedniego zapytania.

  1. Zaprojektuj widok

    Weź zapytanie z naszego poprzedniego przykładu i poprzedź je przedrostkiem CREATE VIEW RecentAlbums AS .

    Usuń także ORDER BY klauzula, ponieważ widoki nie obsługują tej klauzuli (chyba że TOP , OFFSET lub FOR XML jest również określony).

    Dodaj również średnik na końcu instrukcji, jako terminator instrukcji (więcej na ten temat poniżej).

    Przykładowy kod

    Poniżej znajduje się kod z naszego przykładu, z ORDER BY klauzula usunięta i dodany średnik jako terminator instrukcji.

    Sformatowałem go również trochę, aby był bardziej czytelny).

    CREATE VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 10, GETDATE()));

    W tym przykładzie dodałem średnik na końcu widoku. Projektant zapytań tego nie uwzględnił, ale warto to uwzględnić.

    Średnik jest częścią standardu ANSI SQL-92. Jest to znak zakończenia instrukcji.

    Ponadto firma Microsoft ogłosiła, że ​​instrukcje Transact-SQL zakończone średnikami są przestarzałe w SQL Server 2016 i nie będą obsługiwane w przyszłej wersji (SQL Server historycznie używał GO słowo kluczowe jako terminator instrukcji zamiast średnika).

  2. Wykonaj widok

    Teraz wykonaj widok tak, jak wykonujesz każde inne zapytanie.

    Kliknij Wykonaj na pasku narzędzi.

    Możesz teraz przejść do widoku w Eksploratorze obiektów. Rozwiń go, a zobaczysz kolumny oraz ich typy danych i właściwości — tak, jakby to była tabela.

  3. Zapytaj widok

    Teraz, gdy widok został utworzony, możesz wysłać zapytanie do widoku, uruchamiając SELECT oświadczenie przeciwko niemu.

    Możesz więc wysłać zapytanie do naszego nowo utworzonego widoku, używając SELECT * FROM RecentAlbums; .

  4. Filtruj widok

    Jedną z dobrych rzeczy związanych z widokami jest to, że możesz zastosować wobec nich własne kryteria filtrowania — dalsze filtrowanie wyników.

    Na przykład możesz dodać WHERE Genre = 'Pop' , dzięki czemu widok zwraca tylko pop albumy z ostatnich 10 lat.

Zmień widok

Możesz zmodyfikować swój widok, używając ALTER VIEW instrukcja zamiast CREATE VIEW oświadczenie.

  1. Zaprojektuj zmieniony widok

    Tutaj zmodyfikujemy nasz pogląd, aby zwracać albumy z ostatnich 20 lat zamiast zaledwie 10.

    To dość oldschoolowa kolekcja, więc każdy album wydany w ciągu ostatnich 20 lat jest klasyfikowany jako „najnowszy” :)

    Zwrócimy również inną kolumnę:Artists.ActiveFrom

    Przykładowy kod

    Oto kod, którego używamy w przykładzie:

    ALTER VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName,
            Artists.ActiveFrom
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 20, GETDATE()));
  2. Zapytaj widok

    Teraz zapytanie o widok zwróci albumy z 20 lat. Wyświetli również datę, od której artysta był aktywny.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć kolumnę z ograniczeniem w SQL Server

  2. Jak znaleźć granice grup ciągłych liczb sekwencyjnych?

  3. jakikolwiek limit liczby połączeń SQL Server?

  4. DATETIMEFROMPARTS() Przykłady w SQL Server (T-SQL)

  5. Rozciągnij bazę danych w SQL Server 2016 RTM