Questão de Banco de Dados — SQL — FGV 2026
- Código
- fg126980
- Banca
- FGV
- Órgão
- AL-RO
- Ano
- 2026
- Nível
- Superior
- Cargo
- Analista Legislativo (Engenharia de Computação)
- AINNER JOIN
- BRIGHT JOIN
- CFULL OUTER JOIN
- DLEFT OUTER JOIN
- ECROSS JOIN
GabaritoD — LEFT OUTER JOIN
Gabarito: letra D. O LEFT OUTER JOIN (ou LEFT JOIN) garante que todas as linhas da tabela da esquerda (CLIENTE) sejam incluídas no resultado, mesmo quando não há correspondência na tabela da direita (PEDIDO). Clientes sem pedidos aparecem com valores nulos nas colunas de PEDIDO. Esse é exatamente o comportamento descrito no enunciado.
A questão exige o conhecimento dos diferentes tipos de junção SQL. Observe a definição de cada um:
INNER JOIN: retorna apenas os registros que possuem correspondência em ambas as tabelas.
LEFT OUTER JOIN: retorna todos os registros da tabela da esquerda e os correspondentes da direita; quando não há match, as colunas da direita vêm como NULL.
RIGHT OUTER JOIN: o oposto do LEFT: retorna todos os registros da tabela da direita.
FULL OUTER JOIN: retorna todos os registros de ambas as tabelas, combinando onde há match e preenchendo com NULL onde não há.
CROSS JOIN: produto cartesiano, combina cada linha de uma tabela com todas da outra.
Tipo de JOIN | Preserva tabela esquerda? | Preserva tabela direita? | Exibe clientes sem pedidos? | Exibe pedidos sem clientes? |
|---|---|---|---|---|
INNER JOIN | ❌ Não | ❌ Não | ❌ Não | ❌ Não |
LEFT JOIN | ✅ Sim | ❌ Não | ✅ Sim | ❌ Não |
RIGHT JOIN | ❌ Não | ✅ Sim | ❌ Não | ✅ Sim |
FULL OUTER JOIN | ✅ Sim | ✅ Sim | ✅ Sim | ✅ Sim |
CROSS JOIN | ❌ Não (produto cartesiano) | ❌ Não (produto cartesiano) | ❌ Não | ❌ Não |
INNER JOIN só retorna linhas com correspondência em ambas as tabelas. Clientes sem pedidos seriam excluídos, contrariando o enunciado.
RIGHT JOIN prioriza a tabela da direita (PEDIDO). Traria todos os pedidos, mas clientes sem pedidos seriam omitidos (a menos que haja pedido sem cliente, o que não é o caso).
FULL OUTER JOIN inclui todas as linhas de ambas as tabelas, o que é mais amplo do que o necessário: traria também pedidos sem clientes, o que não é pedido. Apesar de incluir os clientes sem pedidos, a especificação pede todas as linhas da tabela da esquerda (e apenas essas), portanto o LEFT JOIN é a escolha exata.
LEFT OUTER JOIN (ou simplesmente LEFT JOIN) é a junção que garante a preservação de todas as linhas da tabela à esquerda (FROM CLIENTE LEFT JOIN PEDIDO ON ...). Clientes sem pedidos aparecem com NULL nas colunas de PEDIDO, atendendo perfeitamente ao requisito "Clientes sem pedidos também devem ser listados".
CROSS JOIN faz o produto cartesiano, combinando cada cliente com cada pedido, o que gera um resultado incorreto e sem sentido lógico (um cliente pode aparecer com pedidos que não são dele). Não é a ferramenta adequada para relacionar registros por chave estrangeira.
Gabarito: letra D.
Link permanente: /questoes/fg126980