View, CTE e Subquery — Você sabe a diferença?
Olá, pessoal! Meu nome é Custódio e estou em plena transição de carreira para Análise de Dados.
Estudando SQL aqui na DIO, percebi que existem várias formas de chegar ao mesmo resultado, mas o "pulo do gato" está em saber como e quando usar cada ferramenta para manter o código limpo e performático.
Hoje, quero compartilhar o que aprendi sobre a tríade: Subquery, CTE e View.
O Cenário
Imagine que temos a tabela funcionarios e nosso objetivo é listar quem ganha acima da média da empresa ($6.000$).
1. Subquery: O "Quebra-galho" Rápido
A Subquery é uma consulta dentro de outra. Ela é excelente para resoluções rápidas e pontuais.
SELECT nome, salario
FROM funcionarios
WHERE salario > (SELECT AVG(salario) FROM funcionarios);
- Quando usar: Em filtros simples onde o resultado de uma consulta alimenta a outra.
- Ponto de atenção: Se ficar muito aninhada (uma dentro da outra), o código vira uma "cebola" difícil de ler.
2. CTE (Common Table Expression): Organização e Elegância
A CTE fatias a consulta em partes lógicas. É como criar variáveis temporárias para o seu SQL. Ela sempre começa com a cláusula WITH.
WITH media_empresa AS (
SELECT AVG(salario) AS media
FROM funcionarios
)
SELECT f.nome, f.salario
FROM funcionarios f, media_empresa m
WHERE f.salario > m.media;
- Quando usar: Em consultas complexas que precisam de uma sequência lógica ou recursividade. É muito mais fácil de ler e manter que uma Subquery.
3. View: A Consulta "Imortal"
Diferente das anteriores, a View fica salva no seu banco de dados. Ela não armazena os dados em si, mas sim a receita (o código).
CREATE VIEW vw_funcionarios_acima_media AS
SELECT nome, salario
FROM funcionarios
WHERE salario > (SELECT AVG(salario) FROM funcionarios);
Como usar:
SELECT * FROM vw_funcionarios_acima_media;
- Quando usar: Quando você tem uma regra de negócio que se repete todo dia. Em vez de reescrever o código, você apenas chama a View.
Em resumo:
- Subquery → Resolução rápida e interna.
- CTE → Organização de códigos complexos e legibilidade.
- View → Reutilização e padronização no banco de dados.
Espero ter ajudado alguém com essas dicas, pois como tenho aprendido, a melhor forma de aprender é compartilhando conhecimento.
Tá, mas e você, já conhecia essa consultas ou utiliza no seu dia a dia de estudos/trabalho?
🔗 Caso queria podemos nos conectar, oque acha?
- 📌 LinkedIn: https://www.linkedin.com/in/custodio-viana/
- 📂 GitHub: https://github.com/Custodio-Viana



