Pular para o conteúdo principal

Questão de Banco de Dados — Geral — Quadrix 2026

Banco de DadosGeral
Código
qa435237
Banca
Quadrix
Órgão
CREF 11
Ano
2026
Cargo
Ana ( )

Considerando as tabelas A e B de um banco de dados relacional e que os campos id dessas tabelas referem-se às suas chaves primárias, julgue o item seguinte.

 

A execução da consulta SQL a seguir retornará todos os campos id de B que não existem em A.

 
1select A.id
2from table_A A
3left join table_B B on A.id = B.id
4where B.id is null
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Junções SQL: LEFT JOIN e a busca por registros sem correspondência

Gabarito: ERRADO (alternativa E). A consulta apresentada retorna os campos id de A que não existem em B, e não o contrário como afirma o enunciado. O LEFT JOIN preserva todas as linhas da tabela à esquerda (table_A A), e a condição WHERE B.id IS NULL filtra exatamente as linhas de A que não encontraram correspondência em B. Para obter os id de B que não existem em A, seria necessário inverter a ordem das tabelas no LEFT JOIN (ou usar RIGHT JOIN).

O LEFT JOIN (junção externa à esquerda) é um dos tipos de junção em SQL que retorna todas as linhas da tabela à esquerda (a primeira mencionada no FROM/JOIN), combinadas com as linhas correspondentes da tabela à direita quando existem. Quando não há correspondência, as colunas da tabela à direita são preenchidas com NULL. É exatamente esse comportamento que permite identificar registros "órfãos" — aqueles que não possuem par na outra tabela.

A lógica da consulta é: primeiro, fazemos a junção entre A e B, mantendo todas as linhas de A. Depois, filtramos apenas as linhas onde B.id IS NULL, ou seja, onde não houve correspondência em B. O resultado são os id de A que não aparecem em B. É um padrão clássico e muito cobrado em provas para encontrar registros sem correspondência.

Para entender melhor, considere um exemplo concreto. Suponha que a tabela A tenha os ids {1, 2, 3} e a tabela B tenha os ids {2, 3, 4}. O LEFT JOIN de A com B produziria:

A.id

B.id

1

NULL

2

2

3

3

Aplicando o filtro WHERE B.id IS NULL, restaria apenas a linha com A.id = 1. Portanto, a consulta retorna {1}, que são os ids de A que não existem em B. Para obter os ids de B que não existem em A (que seriam {4}), a consulta correta seria:

SELECT B.id
FROM table_B B
LEFT JOIN table_A A ON B.id = A.id
WHERE A.id IS NULL

A pegadinha desta questão está exatamente na inversão da ordem das tabelas. A banca apresenta uma consulta que retorna os elementos exclusivos da tabela A, mas o enunciado afirma que retornará os elementos exclusivos da tabela B. É uma armadilha clássica que testa se o candidato compreende o papel da tabela à esquerda no LEFT JOIN.

Guarde esta regra de ouro: no LEFT JOIN, a tabela à esquerda é a "preservada" — todas as suas linhas aparecem no resultado. O WHERE ... IS NULL filtra as linhas dessa tabela preservada que não têm par na outra. Portanto, a consulta retorna os elementos exclusivos da tabela que está à esquerda no JOIN.

Item — ❌ ERRADO

A afirmação do enunciado está incorreta. A consulta apresentada retorna os id de A que não existem em B, e não os id de B que não existem em A, como afirma o item.

O erro está na ordem das tabelas no LEFT JOIN. Como a tabela table_A A está à esquerda, todas as suas linhas são preservadas. A condição WHERE B.id IS NULL seleciona as linhas de A que não encontraram correspondência em B. O resultado são os ids exclusivos de A.

Para retornar os ids de B que não existem em A, a consulta deveria ser:

SELECT B.id
FROM table_B B
LEFT JOIN table_A A ON B.id = A.id
WHERE A.id IS NULL

Ou, alternativamente, usando RIGHT JOIN:

SELECT B.id
FROM table_A A
RIGHT JOIN table_B B ON A.id = B.id
WHERE A.id IS NULL
NÃO CAIA NESSA!

A banca inverteu a ordem das tabelas no LEFT JOIN para confundir o candidato. A consulta retorna os elementos exclusivos da tabela à esquerda (A), não da direita (B). Lembre-se: no LEFT JOIN, a tabela à esquerda é a que tem todas as suas linhas preservadas. Se a pergunta pede os elementos exclusivos de B, o LEFT JOIN deve ter B à esquerda (ou usar RIGHT JOIN com A à esquerda).

Gabarito: ERRADO (alternativa E).

Link permanente: /questoes/qa435237