Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server 2016:Създайте изглед

В SQL Server можете да правите заявки като изгледи. Изгледите са полезни по много причини, включително сигурност, използваемост и удобство.

В SQL Server, изглед е виртуална таблица, чието съдържание се дефинира от заявка. По същество това е предварително написана заявка, която се съхранява в базата данни.

Изгледът се състои от SELECT оператор и когато стартирате заявка към изгледа, виждате резултатите от него, както бихте направили, когато отваряте таблица. Изгледите се наричат ​​виртуални таблици, защото могат да събират заедно данни от множество таблици, както и обобщени данни и да ги представят, сякаш са една таблица.

Предимства на изгледите

Изгледът може да бъде полезен, когато има множество потребители с различни нива на достъп, които всички трябва да видят части от данните в базата данни (но не непременно всички данни). Изгледите могат да правят следното:

  • Ограничете достъпа до конкретни редове в таблица
  • Ограничете достъпа до конкретни колони в таблица
  • Обединете колони от множество таблици и ги представете така, сякаш са част от една таблица
  • Представете обобщена информация (като резултатите от COUNT() функция)

Как да създадете изглед

Създавате изглед, като използвате CREATE VIEW оператор, последван от SELECT изявление.

CREATE VIEW ViewName 
AS
SELECT ...

Сега ще създадем изглед от предишната ни заявка.

  1. Проектирайте изгледа

    Вземете заявката от предишния ни пример и й добавете префикс с CREATE VIEW RecentAlbums AS .

    Също така премахнете ORDER BY клауза, тъй като изгледите не поддържат тази клауза (освен ако TOP , OFFSET или FOR XML също е посочено).

    Също така добавете точка и запетая в края на израза като терминатор на израза (повече за това по-долу).

    Примерен код

    По-долу е кодът от нашия пример с ORDER BY клаузата е премахната и е добавена точка и запетая като терминатор на израза.

    Също така го преформатирах малко, за да го направя по-четливо).

    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()));

    В този пример добавих точка и запетая в края на изгледа. Дизайнерът на заявки не е включил това, но е добра практика да го включите.

    Точката и запетаята е част от стандарта ANSI SQL-92. Това е терминатор на израза.

    Също така, Microsoft обяви, че Transact-SQL изразите, завършващи без точка и запетая, са отхвърлени в SQL Server 2016 и няма да се поддържат в бъдеща версия (SQL Server исторически използва GO ключова дума като терминатор на израза вместо точка и запетая).

  2. Изпълнете изгледа

    Сега изпълнете изгледа точно както бихте изпълнили всяка друга заявка.

    Щракнете върху Изпълни на лентата с инструменти.

    Вече можете да навигирате до изгледа в Object Explorer. Разгънете го и ще видите колоните и техните типове данни и свойства — сякаш е таблица.

  3. Запитване на изгледа

    След като изгледът е създаден, можете да направите заявка за него, като изпълните SELECT изявление срещу него.

    Така че можете да направите заявка за новосъздадения ни изглед, като използвате SELECT * FROM RecentAlbums; .

  4. Филтрирайте изгледа

    Едно от добрите неща за изгледите е, че можете да приложите свои собствени критерии за филтриране спрямо тях – допълнително филтриране на резултатите.

    Например, можете да добавите WHERE Genre = 'Pop' , така че изгледът връща само pop албуми от последните 10 години.

Промяна на изглед

Можете да промените изгледа си, като използвате ALTER VIEW оператор вместо CREATE VIEW изявление.

  1. Проектирайте променения изглед

    Тук ще променим изгледа си, за да върнем албуми през последните 20 години вместо само 10.

    Това е доста стара колекция, така че всеки албум, издаден през последните 20 години, се класифицира като "скорошен" :)

    Ще върнем и друга колона:Artists.ActiveFrom

    Примерен код

    Ето кода, който използваме за примера:

    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. Запитване за изгледа

    Сега запитването на изгледа ще върне албуми на стойност 20 години. Той също така ще покаже датата, от която изпълнителят е бил активен.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахване на водещи нули от поле в SQL израз

  2. Какво SqlDbType се съпоставя с varBinary(max)?

  3. Как да актуализирате и поръчате с помощта на ms sql

  4. Вземете деня на годината от дата в SQL Server (T-SQL)

  5. Вземете ROWS като КОЛОНИ (динамична PIVOT заявка на SQL Server)