Subconsultas escalares, de linha e de tabela
Use subconsultas que retornam um único valor, uma única linha ou uma tabela completa e coloque-as nas cláusulas SELECT, FROM e WHERE.
Subconsultas escalares, de linha e de tabela é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
O que é uma subconsulta?
Uma subconsulta é um SELECT dentro de outra instrução SQL. Ela pode ser:
- Uma subconsulta escalar — retorna um único valor
- Uma subconsulta de linha — retorna uma única linha
- Uma subconsulta de tabela — retorna uma relação (usada em FROM)
Subconsulta escalar
Usada sempre que se espera um único valor:
SELECT id, total,
total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';Subconsulta de linha
Retorna uma linha com várias colunas. É menos comum e usada principalmente com construtores de linhas:
SELECT *
FROM orders
WHERE (status, country) = (
SELECT status, country FROM orders WHERE id = 1
);Subconsulta de tabela em FROM
Trate o resultado de uma consulta como uma tabela temporária:
SELECT country, AVG(big_order_total) AS avg_big
FROM (
SELECT country, total AS big_order_total
FROM orders
WHERE total > 1000
) AS sub
GROUP BY country;Atribuindo aliases a subconsultas em FROM
Toda subconsulta em FROM exige um alias no PostgreSQL — mesmo que você não o utilize:
SELECT * FROM (SELECT 1) sub; -- "sub" requiredSubconsultas em WHERE
Filtre por um conjunto de valores derivados:
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);EXISTS / NOT EXISTS
Verifique se uma subconsulta retorna pelo menos uma linha:
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);Subconsultas em SELECT
Incorpore uma subconsulta escalar por linha:
SELECT id, full_name,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;
-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.Subconsultas como expressões
Uma subconsulta escalar que retorna mais de uma linha gera um erro:
SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expressionQuando refatorar para JOIN
Muitas expressões no formato "x IN (SELECT...)" podem ser reescritas como JOIN. Escolha a forma mais clara de ler; os planejadores modernos geralmente produzem o mesmo plano.
Subconsultas versus CTEs
Se precisar da mesma subconsulta duas vezes, dê-lhe um nome com uma CTE — isso será abordado na próxima lição.
Resumo
As subconsultas têm três modalidades.
- Escalar em SELECT/WHERE
- De linha em comparações de igualdade
- De tabela em FROM
- EXISTS para verificações de "qualquer correspondência"
Verificação rápida
Qual forma de subconsulta é usada dentro de uma cláusula FROM como uma tabela temporária?
Perguntas Frequentes
A aula “Subconsultas escalares, de linha e de tabela” é grátis?
Sim — o texto completo de “Subconsultas escalares, de linha e de tabela” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Subconsultas escalares, de linha e de tabela”?
Use subconsultas que retornam um único valor, uma única linha ou uma tabela completa e coloque-as nas cláusulas SELECT, FROM e WHERE. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Subconsultas escalares, de linha e de tabela”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Subconsultas escalares, de linha e de tabela
- Subconsultas correlacionadas e não correlacionadas
- Expressões de tabela comuns (WITH)
- CTEs RECURSIVE para hierarquias