SQL

Visões (Views)

As visões, ou views, são objetos do banco de dados que representam uma consulta salva. Diferentemente de tabelas temporárias ou permanentes, uma visão não armazena fisicamente os dados, mas sim a instrução SQL que deve ser executada sempre que a visão é consultada. Assim, ela fornece uma forma de simplificar consultas complexas, garantir segurança e reutilizar trechos de SQL.

No MySQL, uma visão se comporta como uma tabela virtual: você pode fazer SELECT diretamente sobre ela, como se fosse uma tabela comum.

Estrutura de uma Visão

A sintaxe básica para criação de uma visão é:

CREATE VIEW nome_visao AS
SELECT colunas
FROM tabela
WHERE condicao;

Uma vez criada, a visão pode ser consultada da mesma forma que uma tabela:

SELECT * FROM nome_visao;

Características Importantes

  • Virtual: não armazena dados, apenas a consulta.
  • Segurança: permite restringir o acesso a colunas e linhas, ocultando dados sensíveis.
  • Simplicidade: encapsula consultas complexas em um nome simples.
  • Atualização: em alguns casos, é possível usar INSERT, UPDATE ou DELETE sobre a visão, desde que não haja junções complexas ou agregações.
  • Persistência: diferentemente de tabelas temporárias, a visão continua existindo até ser excluída com DROP VIEW.

Criando Visões a partir de um SELECT

Uma visão é sempre criada a partir de um SELECT. Por exemplo:

CREATE VIEW vendas_por_cliente AS
SELECT cliente_id, SUM(valor) AS total
FROM vendas
GROUP BY cliente_id;

Agora, ao consultar:

SELECT * FROM vendas_por_cliente;

o banco executa automaticamente a consulta original e retorna o resultado agregado.

Exemplos Práticos

1. Simplificação de consulta

CREATE VIEW livros_modernos AS
SELECT titulo, autor, ano_publicacao
FROM livro
WHERE ano_publicacao >= 2000;

Em vez de escrever a condição em todas as consultas, basta usar:

SELECT * FROM livros_modernos;

2. Ocultando dados sensíveis

CREATE VIEW clientes_publicos AS
SELECT id, nome, cidade
FROM clientes;

Assim, informações como CPF ou salário não ficam disponíveis a usuários que só têm acesso à visão.

3. Reutilização em relatórios

CREATE VIEW faturamento_mensal AS
SELECT YEAR(data) AS ano, MONTH(data) AS mes, SUM(valor) AS total
FROM vendas
GROUP BY YEAR(data), MONTH(data);

Consultas de relatórios podem usar diretamente:

SELECT * FROM faturamento_mensal WHERE ano = 2025;

Atualização de Visões

Nem todas as visões podem ser atualizadas. Em geral, é permitido alterar dados por meio de uma visão se:

  • a visão referencia apenas uma tabela;
  • não há DISTINCT, GROUP BY, HAVING, UNION ou agregações;
  • todas as colunas necessárias estão presentes.

Exemplo de visão atualizável:

CREATE VIEW estoque_produtos AS
SELECT id, nome, quantidade
FROM produtos;

Nesse caso, podemos executar:

UPDATE estoque_produtos
SET quantidade = quantidade + 10
WHERE id = 1;

E a atualização refletirá diretamente na tabela produtos.

Visões x Tabelas Temporárias

  • Visões: não armazenam dados, apenas a consulta; persistem no banco até serem removidas.
  • Tabelas Temporárias: armazenam dados reais, mas só existem dentro da sessão em que foram criadas.

Considerações Finais

As visões são uma ferramenta essencial para manter a clareza, segurança e reutilização no banco de dados. Elas simplificam consultas recorrentes, permitem restringir acesso a informações sensíveis e organizam melhor a camada de acesso aos dados. Contudo, como sempre são executadas dinamicamente, é importante considerar o impacto em desempenho quando usadas sobre consultas muito complexas.