Ola! esse artigo está melhor escrito aqui. Mas fique a vontade para lê-lo completamente.

INTRODUÇÃO

Depois de vermos um importante recurso que foram as CTEs, agora vamos trabalhar com uma das ferramentas mais utilizadas quando queremos resumir uma tabela com as informações mais importantes que são as Views.

VIEWS

São representações físicas de de uma ou mais tabelas onde podemos pré-armazenar um resultado ou reduzir a visualização de colunas de tabelas sensíveis

Dentro do conjunto de tabelas expressas são opções reutilizáveis uma vez que são armazenadas em disco

Podemos manipular uma view como se fosse tabelas utilizando comandos como: insert, update, delete

As views não se atualizam de forma automática quando a tabela ao qual ela foi originada é modificada. Ainda que possamos utilizar duas procedure de sistema, recomenda-se atualizar as views de forma direta

A ordem de exibição de resultado de uma view, não depende da query interna que a cria, se quiser ordenar uma view, o order by deve vir especificado na query externa, ou seja, a query que seleciona view. (como todo recurso dentro do grupo de tabela derivada

Mesmo que seja possível criar uma view com a query interna ordenando pelo order by, a apresentação na query externa não é garantida, embora em alguns casos, por questões de otimização do próprio SQL Server a view apareça ordenada, o jeito correto e que garantirá a exibição ordenada é utilizar o order by na query externa.

Views não podem referenciar tabelas temporárias ou variáveis de tabela.

CRIANDO VIEWS

Abaixo, temos um exemplo simples de como criar uma view

NOTA: Se na criação da view for atribuído um novo nome para a coluna utilizada, este nome será o nome válido na criação da view e todo select feito nela, deverá ser pelo apelido e não o nome original .Cuidado.

Veja abaixo:

ATUALIZANDO UMA VIEW

Como dito, as views são representações resumidas de tabela e assim sendo, podem sofrer update, delete, insert e mais. As views costumam ser atualizadas quando a tabela de origem é, porém, podem ser atualizadas manualmente. Veja os dois exemplos abaixo:

Exemplo 01: View sendo atualiza indiretamente após a tabela

Exemplo 02: Atualizando a view automaticamente

Uma outra forma de atualizar uma view, é executando uma procedure de sistema chamada sp_refreshview.

Exec sp_refreshview ‘nome_view’;

VIEWS COM OPTIONS

Podemos atribuir algumas opções de complemento para criar uma view, essas opções permite atribuir a view em um schema de tabela, criar uma criptografia e até mesmo uma restrição impedindo operações fora do escopo.

Quando criamos uma view com schemabinding, a tabela que a view usa o schema como base, não pode ser alterada ou deletada. Isso só pode ocorrer se a view deixar de alguma forma ser dependente do schema desta tabela

Views que possuem o schemabinding atualizam sozinhas. Normalmente, com ou sem schemabinding ela irá atualizar a medida que a tabela fonte sofrer alteração mas, caso não aconteça, utilize a stored procedure sp_refreshview ‘nome_view’.

Check options na view é uma espécie de filtro que limita ações de modificação no objeto de acordo com a cláusula where.

Se um update por exemplo for executado na view e este não obedecer determinada restrição, o comando é executado mas, aquela linha que foi atualizada deixará de ser exibida na view.

E por fim, se quiser ocultar de quais tabelas é originada é só declarar o with encryption e assim ocultamos todos os comandos que formam a view.

Vamos aos exemplos:

No primeiro exemplo teremos uma view que está atrelada em um schema. Irei alterar a view criada inserindo a opção na modificação.

Quando criamos uma view com Schemabinding, a tabela ao qual a view foi originada não pode ser deletada do sistema.

Agora, vamos verificar como o Check Option funciona na prática quando criamos uma view com essa declaração. Reparem que essa opção vai ao final do comando.

Se tentarmos atualizar uma view diretamente e essa atualização não corresponder ao check option o engine do banco não irá permitir a atualização.

Veja abaixo:

Um jeito de “quebrar” essa restrição é atualizando a tabela fonte, veja:

Repare que no primeiro conjunto de resultados, o país Austrália aparece, diferente de quando executamos um select na view e o resultado começa a ser exibido a partir da 11º linha.

E finalizando, podemos ocultar todo o statement que foi utilizado para criar a view utilizando a opção de Encrypt quando criamos ou alteramos.

No primeiro exemplo, irei mostrar como podemos verificar como ela foi criada e no segundo, com o bloqueio a esse tipo de visualização.

Segundo exemplo, aplicando o With Encryption, veja!

Agora, a descrição da view, simplesmente aparece null, e não é possível saber o que foi utilizado para sua criação.

Vale ressaltar também que, como uma view é um objeto dentro do banco de dados, ela está sujeita a regras de permissões que por ventura seu banco possa ter, logo, pode ser que haja restrição para executar comandos nestes objetos. No post sobre permissão, é possível entender seu funcionamento.

E com isso, podemos finalizar mais um post, sobre um dos recursos mais utilizados em banco de dados que são as views e seus recursos  para criação.

Espero que tenham gostado e saúde!