Cursos / Redes de Computadores / Conceitos de Banco de Dados / Aula

arrow_back Aula 07 - Linguagem SQL - Subconsultas e Visões

VIEWS

Visões (views) em SQL são consultas armazenadas em uma estrutura de fácil acesso baseadas num comando SELECT. Essa consulta armazenada funciona como uma tabela virtual, com comportamento similar a uma tabela real, entretanto, sem armazenar dados, não existindo como uma entidade independente no banco de dados. Os dados que são exibidos nas visões são gerados dinamicamente toda vez que a visão é referenciada.

O SGBD armazena apenas a definição das visões (nome da visão e o comando SELECT). Quando o usuário chama uma visão, o sistema de banco de dados associa os dados apropriados a ela. Uma visão apresenta o resultado final desse processo, ocultando todos os detalhes técnicos.

A utilização de visões permite simplificar e personalizar tabelas no seu banco de dados. Também oferece um mecanismo de segurança (restringindo o acesso de usuários a campos predeterminados). Além disso, as visões mantêm os dados independentes da estrutura do banco de dados, garantindo flexibilidade para a análise e manipulação de dados.

A instrução para criar uma visão é bastante simples, basta adicionar as palavras CREATE VIEW antes da instrução da consulta que se deseja armazenar. A sintaxe de criação de uma visão é descrita no destaque abaixo.

Nessa expressão, no campo nome_da_visão deve-se inserir o nome que se deseja atribuir para a visão, nome esse que deve seguir as mesmas regras usadas para os nomes das tabelas. Após a cláusula AS, tem-se qualquer comando SELECT válido.

Vamos exercitar a criação de VIEWS no banco de dados sistvendas para entendermos melhor o seu conceito? Na aula anterior sobre subconsultas, um dos exemplos que foram trabalhados foi a consulta aos nomes de todos os produtos e suas quantidades que foram vendidas. Visto que esse tipo de pesquisa tende a ser realizado diariamente num banco de dados de um sistema de vendas, é muito útil criar uma VIEW contendo essa consulta. A criação de uma VIEW nesse caso simplifica a consulta e evita que diariamente o usuário tenha de escrever uma consulta complexa, correndo o risco de cometer algum erro. O comando para criar essa VIEW é descrito no destaque a seguir.

A resposta do sistema SGBD para o referido comando é ilustrada na Figura 10. É interessante notar que a visão aparece no esquema do banco de dados como se fosse uma tabela, conforme pode ser verificado usando a instrução SHOW TABLES após a criação da visão, que exibe como resposta o nome das tabelas contidas no banco de dados em questão.

Tela do <span class='italico'>My</span>SQL após os comandos CREATE VIEW e SHOW TABLES.

Mas como fazer para visualizar a estrutura de uma visão, ou seja, a estrutura de uma tabela virtual? A resposta a essa pergunta é o comando DESC. Para verificar a estrutura de uma visão é necessário utilizar o comando DESC, conforme apresentado no destaque a seguir.

A resposta do SGBD ao comando DESC produtos_vendidos é ilustrada na Figura 11.

Tela do <span class='italico'>My</span>SQL após a visualização da estrutura da <span class='strong'>visão</span> usando o comando DESC.

Observe que a tabela virtual produtos_vendidos contém dois campos: prod_nome e vendidos. O campo vendidos é o resultado da seguinte subconsulta:

Essa subconsulta ou consulta interna acessa os dados da tabela compras, enquanto a consulta externa acessa as informações da tabela produtos. Portanto, a tabela virtual produtos_vendidos contém informações pertencentes às tabelas produtos e compras, permitindo flexibilidade e simplicidade para a análise dos dados.

Você deve estar se perguntado como fazer para visualizar os dados da consulta que foi armazenada como uma VIEW. Só faz sentido criar uma VIEW se a visualização dos seus dados for realizada de forma simplificada. E é exatamente isso que acontece. A sintaxe para visualizar todos os dados de uma VIEW é descrita no destaque a seguir.

Sendo assim, para visualizarmos todos os dados da VIEW produtos_vendidos, basta digitar o seguinte comando:

A resposta do sistema ao comando acima é ilustrada na Figura 12.

Tela do <span class='italico'>My</span>SQL após os comandos SELECTs para visualização da quantidade total de produtos vendidos.

Observe que a resposta do sistema é exatamente a mesma dada pelo comando da consulta em si. A diferença é que com a utilização de visões, o comando necessário para visualizar os dados é simples, tornando a consulta muito mais simples e prática.

É importante ressaltar que o SGBD armazena apenas o nome da visão e o comando SELECT associado. Os dados visualizados nas visões são gerados dinamicamente toda vez que é solicitada uma consulta sobre a VIEW. Isso implica em uma visão estar sempre atualizada, ou seja, ao se modificar dados nas tabelas referenciadas na descrição da visão, uma consulta a visão reflete automaticamente essas alterações.

Vale salientar que uma consulta a uma visão pode ser realizada da mesma forma que uma consulta a uma tabela. O segredo é que a visão se comporta como uma tabela de verdade, no entanto, sem guardar os dados, por isso chamada de uma tabela virtual. Vejamos o seguinte exemplo: realizar uma consulta à visão com o objetivo de determinar quais os produtos que já foram vendidos.

Conforme pode ser observado nessa consulta, na cláusula SELECT tem-se apenas o atributo prod_nome; na cláusula FROM tem-se o nome da visão e na cláusula WHERE tem-se a condição em questão, no caso, que o atributo vendidos deve ser maior que 0.

Quando uma visão não é mais necessária, pode-se excluí-la utilizando o comando descrito a seguir.

Versão 5.3 - Todos os Direitos reservados