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.
-
Projetar a visualização
Pegue a consulta do nosso exemplo anterior e prefixe-a com CREATE VIEW RecentAlbums AS .
Remova também oORDER BY
cláusula, porque as visualizações não suportam esta cláusula (a menos queTOP
,OFFSET
ouFOR 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 oORDER 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 oGO
palavra-chave como um terminador de instrução em vez do ponto e vírgula).
-
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.
-
Consulte a visualização
Agora que a visualização foi criada, você pode consultar a visualização executando umSELECT
declaração contra ela.
Assim, você pode consultar nossa visualização recém-criada usandoSELECT * FROM RecentAlbums;
.
-
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 adicionarWHERE 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. -
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()));
-
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.