Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2025
- Código
- ce417349
- Banca
- CESPE / CEBRASPE
- Órgão
- PF
- Ano
- 2025
- Cargo
- PCF
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: Certo. A afirmação está correta: as junções externas (LEFT, RIGHT e FULL OUTER JOIN) foram projetadas exatamente para preservar registros de uma ou de ambas as tabelas mesmo quando não há correspondência entre as chaves de junção, preenchendo com NULL os campos da tabela que não possui linha correspondente. Esse é o comportamento padrão definido pela linguagem SQL e descrito na literatura de bancos de dados relacionais.
As junções (JOINs) são operações da álgebra relacional que combinam linhas de duas ou mais tabelas com base em uma condição de correspondência, geralmente envolvendo chaves. O JOIN interno (INNER JOIN) é o mais básico: ele retorna apenas as linhas que possuem correspondência em ambas as tabelas, ou seja, descarta qualquer registro que não encontre um par. Já as junções externas (OUTER JOIN) ampliam esse comportamento, preservando registros que ficariam de fora no JOIN interno.
Existem três variações de junção externa, cada uma com uma regra específica sobre quais registros são preservados:
LEFT OUTER JOIN (ou LEFT JOIN): retorna todos os registros da tabela à esquerda (a primeira citada no comando) e apenas os registros correspondentes da tabela à direita. Quando não há correspondência, os campos da tabela à direita são preenchidos com NULL.
RIGHT OUTER JOIN (ou RIGHT JOIN): é o espelho do LEFT JOIN. Retorna todos os registros da tabela à direita e apenas os correspondentes da tabela à esquerda, preenchendo com NULL os campos da tabela à esquerda sem correspondência.
FULL OUTER JOIN (ou FULL JOIN): combina o efeito dos dois anteriores. Retorna todos os registros de ambas as tabelas, preenchendo com NULL os campos da tabela que não possui correspondência na outra.
A palavra-chave OUTER é opcional na sintaxe SQL, ou seja, LEFT JOIN, RIGHT JOIN e FULL JOIN são equivalentes a LEFT OUTER JOIN, RIGHT OUTER JOIN e FULL OUTER JOIN, respectivamente.
Para visualizar o comportamento, considere duas tabelas simples: a tabela A com os registros (1, 2, 3) e a tabela B com os registros (2, 3, 4). Um INNER JOIN pela chave retornaria apenas os registros 2 e 3. Um LEFT JOIN retornaria 1, 2 e 3, sendo que o registro 1 teria os campos de B preenchidos com NULL. Um RIGHT JOIN retornaria 2, 3 e 4, com o registro 4 tendo os campos de A preenchidos com NULL. Um FULL JOIN retornaria 1, 2, 3 e 4, com NULLs nos campos sem correspondência.
A pegadinha que a banca explora neste tema é a confusão entre o JOIN interno e o JOIN externo. O candidato que não domina a diferença pode achar que as junções externas também descartam registros sem correspondência, o que é falso. A característica central das junções externas é justamente a preservação de registros, e é exatamente isso que a afirmação descreve.
Guarde a distinção entre INNER JOIN (descarta sem correspondência) e OUTER JOIN (preserva sem correspondência): é nela que a questão se resolve.
Tipo de Junção | Registros Preservados | Campos sem Correspondência |
|---|---|---|
LEFT OUTER JOIN | Todos da tabela esquerda | Preenchidos com NULL |
RIGHT OUTER JOIN | Todos da tabela direita | Preenchidos com NULL |
FULL OUTER JOIN | Todos de ambas as tabelas | Preenchidos com NULL |
A afirmação está correta. As junções externas (LEFT, RIGHT e FULL OUTER JOIN) permitem incluir registros de uma ou de ambas as tabelas, mesmo quando não há correspondência entre as chaves de junção. O LEFT OUTER JOIN preserva os registros da tabela esquerda, o RIGHT OUTER JOIN preserva os da tabela direita, e o FULL OUTER JOIN preserva os de ambas, preenchendo com NULL os campos sem correspondência. Essa é a definição clássica dessas operações na linguagem SQL.
Para fixar, lembre-se da regra: INNER JOIN = só o que casa; OUTER JOIN = tudo, mesmo o que não casa. E para cada tipo de OUTER JOIN, pergunte-se: "quem é preservado?" — LEFT preserva a esquerda, RIGHT preserva a direita, FULL preserva os dois lados. Essa pergunta resolve qualquer questão sobre junções externas.
Gabarito: Certo.
Link permanente: /questoes/ce417349