Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server 2016:criar uma exibição


No SQL Server, você pode consultar como exibições. As visualizações são benéficas por vários motivos, incluindo segurança, usabilidade e conveniência.

No SQL Server, uma visualização é uma tabela virtual cujo conteúdo é definido por uma consulta. É basicamente uma consulta pré-escrita que é armazenada no banco de dados.

Uma visualização consiste em um SELECT e quando você executa uma consulta na exibição, vê os resultados dela como faria ao abrir uma tabela. As exibições são chamadas de tabelas virtuais porque podem reunir dados de várias tabelas, bem como dados agregados, e apresentá-los como se fosse uma única tabela.

Benefícios das visualizações


Uma visualização pode ser útil quando há vários usuários com diferentes níveis de acesso, que precisam ver partes dos dados no banco de dados (mas não necessariamente todos os dados). As visualizações podem fazer o seguinte:
  • Restringir o acesso a linhas específicas em uma tabela
  • Restringir o acesso a colunas específicas em uma tabela
  • Junte colunas de várias tabelas e apresente-as como se fossem parte de uma única tabela
  • Apresente informações agregadas (como os resultados do COUNT() função)

Como criar uma visualização


Você cria uma visualização usando o CREATE VIEW instrução, seguida pelo SELECT demonstração.
CREATE VIEW ViewName 
AS
SELECT ...

Agora vamos criar uma visão de nossa consulta anterior.
  1. Projetar a visualização


    Pegue a consulta do nosso exemplo anterior e prefixe-a com CREATE VIEW RecentAlbums AS .

    Remova também o ORDER BY cláusula, porque as visualizações não suportam esta cláusula (a menos que TOP , OFFSET ou FOR XML também é especificado).

    Também adicione um ponto e vírgula ao final da instrução, como um terminador de instrução (mais sobre isso abaixo).

    Código de amostra


    Abaixo está o código do nosso exemplo, com o ORDER BY cláusula removida e um ponto e vírgula adicionado como um terminador de instrução.

    Eu também reformatei um pouco para torná-lo mais legível).
    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()));

    Neste exemplo, adicionei um ponto e vírgula ao final da exibição. O Query Designer não incluiu isso, mas é uma boa prática incluí-lo.

    O ponto e vírgula faz parte do padrão ANSI SQL-92. É um caractere terminador de instrução.

    Além disso, a Microsoft anunciou que as instruções Transact-SQL que não terminam com ponto e vírgula estão obsoletas no SQL Server 2016 e não terão suporte em uma versão futura (o SQL Server tem usado historicamente o GO palavra-chave como um terminador de instrução em vez do ponto e vírgula).
  2. Executar a visualização


    Agora execute a visualização da mesma forma que você executaria qualquer outra consulta.

    Clique em Executar na barra de ferramentas.

    Agora você pode navegar para a visualização no Pesquisador de Objetos. Expanda-o e você verá as colunas e seus tipos de dados e propriedades — como se fosse uma tabela.
  3. Consulte a visualização


    Agora que a visualização foi criada, você pode consultar a visualização executando um SELECT declaração contra ela.

    Assim, você pode consultar nossa visualização recém-criada usando SELECT * FROM RecentAlbums; .
  4. Filtrar a visualização


    Uma das coisas boas das visualizações é que você pode aplicar seus próprios critérios de filtragem a elas — filtrando ainda mais os resultados.

    Por exemplo, você pode adicionar WHERE Genre = 'Pop' , para que a visualização retorne apenas pop álbuns dos últimos 10 anos.

Alterar uma visualização


Você pode modificar sua visualização usando o ALTER VIEW instrução em vez de CREATE VIEW demonstração.
  1. Projetar a visualização alterada


    Aqui modificaremos nossa visão para retornar álbuns nos últimos 20 anos em vez de apenas 10.

    É uma coleção bem antiga, então qualquer álbum lançado nos últimos 20 anos é classificado como "recente" :)

    Também retornaremos outra coluna:Artists.ActiveFrom

    Código de amostra


    Aqui está o código que usamos para o exemplo:
    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. Consulte a visualização


    Agora, consultar a visualização retornará 20 anos de álbuns. Ele também exibirá a data em que o artista estava ativo.