0Pricing
SQL Academy · Aula

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" required

Subconsultas 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 expression

Quando 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

  1. Subconsultas escalares, de linha e de tabela
  2. Subconsultas correlacionadas e não correlacionadas
  3. Expressões de tabela comuns (WITH)
  4. CTEs RECURSIVE para hierarquias
← Voltar para SQL Academy