Views em SQL: O Que São, Como Criar e Quando Vale a Pena Usar

Entenda o que são views em SQL, como criar uma com CREATE VIEW e em quais situações elas simplificam consultas e protegem dados.

Compartilhar no Linkedin Compartilhar no WhatsApp

Tempo estimado de leitura: 8 minutos

Imagem do artigo Views em SQL: O Que São, Como Criar e Quando Vale a Pena Usar

Quem começa a trabalhar com banco de dados logo percebe que algumas consultas se repetem o tempo todo: o mesmo JOIN entre três tabelas, o mesmo filtro, as mesmas colunas renomeadas. Copiar e colar esse SQL em todo lugar funciona por um tempo, mas vira dor de cabeça quando a regra muda. É exatamente para isso que existem as views. Neste artigo você vai entender o que é uma view, como criá-la, quais são suas vantagens e limitações e em que situações ela realmente ajuda.

O que é uma view

Uma view (em português, às vezes chamada de “visão”) é uma consulta SQL salva no banco com um nome. Depois de criada, ela pode ser usada como se fosse uma tabela: você faz SELECT nela, aplica WHERE, ORDER BY e até junta com outras tabelas.

A diferença é que, na forma mais comum, a view não guarda dados próprios. Ela guarda apenas a definição da consulta. Toda vez que alguém consulta a view, o banco executa por baixo a consulta original e devolve o resultado atualizado. Por isso se diz que a view é uma “tabela virtual”.

Como criar uma view: sintaxe básica

Imagine um sistema de loja com as tabelas clientes e pedidos. Toda hora alguém precisa ver os pedidos junto com o nome e a cidade do cliente. Em vez de repetir o JOIN, criamos uma view:

CREATE VIEW vw_pedidos_clientes AS
SELECT p.id AS pedido_id,
       p.data_pedido,
       p.valor_total,
       c.nome AS cliente,
       c.cidade
FROM pedidos p
INNER JOIN clientes c ON c.id = p.cliente_id;

A partir daí, a consulta fica bem mais simples:

SELECT cliente, valor_total
FROM vw_pedidos_clientes
WHERE cidade = 'Recife'
ORDER BY valor_total DESC;

Repare que quem usa a view nem precisa saber que existem duas tabelas por trás. Para alterar a definição, muitos bancos aceitam CREATE OR REPLACE VIEW (PostgreSQL, MySQL, Oracle) ou ALTER VIEW (SQL Server). Para remover, usa-se DROP VIEW nome_da_view;.

Para que servem as views na prática

As views resolvem alguns problemas bem concretos do dia a dia:

  • Simplificar consultas complexas: JOINs, cálculos e filtros ficam escondidos atrás de um nome claro, e quem consulta escreve SQL mais curto.
  • Centralizar regras de negócio: se “cliente ativo” significa “comprou nos últimos 12 meses”, essa regra fica em um único lugar. Mudou a regra? Altera-se só a view.
  • Controlar acesso a dados: é possível dar permissão a um usuário para consultar a view sem dar acesso às tabelas originais. Assim, colunas sensíveis como CPF ou salário ficam de fora.
  • Manter compatibilidade: se uma tabela for reestruturada, uma view com o formato antigo pode manter relatórios e sistemas antigos funcionando.
  • Padronizar nomes: colunas com nomes técnicos podem ganhar apelidos mais legíveis para analistas e ferramentas de relatório.

Exemplo: usando view para proteger dados

Suponha uma tabela funcionarios com nome, setor, e-mail, CPF e salário. A equipe de comunicação precisa da lista de nomes e e-mails por setor, mas não deve ver CPF nem salário. Uma solução comum é:

CREATE VIEW vw_contatos_funcionarios AS
SELECT nome, setor, email
FROM funcionarios
WHERE ativo = TRUE;

GRANT SELECT ON vw_contatos_funcionarios TO equipe_comunicacao;

O grupo equipe_comunicacao consulta apenas o que precisa. Esse uso de views como “camada de segurança” é um dos mais valorizados em ambientes corporativos.

View comum x view materializada

Alguns bancos oferecem um segundo tipo: a view materializada. Nela, o resultado da consulta é de fato armazenado em disco, como uma “foto” dos dados. A leitura fica muito mais rápida, mas os dados só são atualizados quando a view é atualizada (no PostgreSQL, por exemplo, com REFRESH MATERIALIZED VIEW).

CaracterísticaView comumView materializada
Armazena dados?Não, só a consultaSim, guarda o resultado
Dados sempre atuais?SimSó após atualização
Velocidade de leituraIgual à da consulta originalGeralmente bem maior
Ocupa espaço?Praticamente nenhumSim
Uso típicoSimplificar e proteger acessoRelatórios pesados e painéis

O suporte varia: PostgreSQL e Oracle têm views materializadas nativas; no SQL Server o recurso equivalente se chama “indexed view”; o MySQL não oferece view materializada nativa.

Dá para inserir e atualizar dados por uma view?

Em muitos casos, sim. Views simples, baseadas em uma única tabela, sem funções de agregação (SUM, COUNT), sem GROUP BY e sem DISTINCT, costumam ser atualizáveis: um UPDATE na view altera a tabela original.

Já views com JOINs, agregações ou colunas calculadas normalmente são somente leitura. Um recurso útil é a cláusula WITH CHECK OPTION, que impede inserir ou alterar, pela view, linhas que não atenderiam ao filtro dela. As regras exatas mudam de um banco para outro, então vale consultar a documentação do sistema que você usa.

Cuidados e limitações

  • View não deixa a consulta mais rápida por si só: uma view comum executa a mesma consulta de antes. Se ela é lenta, continuará lenta. Desempenho depende de índices e de uma consulta bem escrita.
  • Evite views em cima de views em cima de views: camadas demais dificultam entender o que está sendo executado e podem gerar planos de execução ruins.
  • Cuidado com SELECT *: em alguns bancos, a lista de colunas da view é fixada no momento da criação. Se a tabela ganhar colunas novas, a view pode não refleti-las. Liste as colunas explicitamente.
  • Dependências: apagar ou renomear uma coluna usada por uma view pode quebrá-la. Documente quais views dependem de quais tabelas.

Boas práticas de nomenclatura e organização

Muitas equipes usam um prefixo como vw_ ou v_ para deixar claro que se trata de uma view, e não de uma tabela. Nomes descritivos, como vw_vendas_mensais_por_loja, ajudam quem chega depois. Também é uma boa ideia manter os scripts de criação das views versionados (por exemplo, no Git) junto com o restante do código do sistema, para que qualquer mudança fique registrada.

Conclusão

Views são uma ferramenta simples e poderosa: transformam consultas complicadas em “tabelas” fáceis de usar, centralizam regras de negócio e ajudam a controlar quem vê o quê. Entender a diferença entre view comum e materializada, e saber quando uma view pode ou não ser atualizada, já coloca você um passo à frente em projetos reais. Se quiser aprofundar seus conhecimentos em SQL, modelagem e administração de bancos de dados, vale explorar os cursos gratuitos de banco de dados disponíveis na Cursa e praticar com exemplos do seu dia a dia.

Cookies, Cache e Histórico: O Que o Navegador Guarda Sobre Você

Entenda o que são cookies, cache e histórico do navegador, para que servem, quando limpar cada um e como isso afeta sua privacidade.

Sensores e Atuadores: Como o Arduino Percebe o Mundo e Age Sobre Ele

Entenda a diferença entre sensores e atuadores, como o Arduino lê sinais e aciona dispositivos, e como montar seus primeiros projetos.

Endereço IP, Máscara de Sub-rede e Gateway: O Trio Que Faz Sua Rede Funcionar

Entenda de forma prática o que são endereço IP, máscara de sub-rede e gateway padrão, e como esses três parâmetros conversam entre si.

Compressão de Arquivos: Como o ZIP Consegue Reduzir o Tamanho dos Seus Dados

Entenda como funciona a compressão de arquivos, a diferença entre métodos com e sem perda e quando cada formato faz sentido.

Expressões Regulares (Regex): O Que São e Como Usar na Prática

Aprenda o que são expressões regulares, os principais símbolos, quantificadores e como aplicar regex para buscar e validar textos.

Como Funciona o DNS: o Sistema que Traduz Nomes em Endereços na Internet

Entenda de forma simples o que é DNS, como acontece a resolução de nomes, os principais tipos de registro e por que ele é essencial para a internet.

INNER JOIN, LEFT JOIN e RIGHT JOIN: como relacionar tabelas no SQL

Entenda de forma simples como funcionam INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN para combinar dados de várias tabelas no SQL.

TypeScript para iniciantes: o que é e por que ele melhora o JavaScript

Entenda o que é TypeScript, como a tipagem estática ajuda a evitar erros e por que ele se tornou essencial no desenvolvimento web moderno.