Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2026

Banco de DadosSQL
Código
fg131894
Banca
FGV
Órgão
PC-PI
Ano
2026
Nível
Superior
Cargo
Perito Criminal - Informática Forense
Considere a versão simplificada de um banco de dados utilizado por uma delegacia, conforme descrito a seguir, especificado em SQL ANSI:Imagem associada para resolução da questãoA consulta apresentada revela o número do CPF e nome de suspeitos associados a
  1. Acrimes sem ocorrência.
  2. Bnenhum crime.
  3. Cocorrências sem crime.
  4. Dtodos os crimes cadastrados.
  5. Euma ocorrência apenas.
Revelar gabarito e comentário

GabaritoD — todos os crimes cadastrados.

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 o significado dos registros sem correspondência

Gabarito: letra D. A consulta usa um LEFT JOIN entre a tabela de suspeitos e a tabela de ocorrências, o que preserva todos os registros da tabela à esquerda (suspeitos), mesmo aqueles que não possuem correspondência na tabela à direita (ocorrências). Portanto, o resultado revela o CPF e nome de suspeitos associados a todos os crimes cadastrados, incluindo aqueles sem ocorrência registrada — a alternativa D é a correta.

O LEFT JOIN (ou LEFT OUTER JOIN) é uma das junções externas do SQL. Para entender o que ele retorna, é preciso dominar a diferença entre junção interna e junção externa. A junção interna (INNER JOIN) retorna apenas as linhas que possuem correspondência nas duas tabelas envolvidas. Já a junção externa (LEFT JOIN, RIGHT JOIN, FULL JOIN) preserva as linhas de uma ou de ambas as tabelas, mesmo quando não há correspondência na outra, preenchendo com NULL os campos da tabela que não teve correspondência.

No caso do LEFT JOIN, a tabela da esquerda (a que aparece no FROM) é a tabela preservada. Isso significa que todos os suspeitos cadastrados aparecerão no resultado, independentemente de terem ou não uma ocorrência associada. Se um suspeito não tiver ocorrência, os campos da tabela de ocorrências virão como NULL. Essa é a característica central que a questão explora.

Para fixar o conceito, imagine que a tabela Suspeito tenha 10 registros e a tabela Ocorrencia tenha 8 registros, sendo que 6 suspeitos possuem ocorrência e 4 não possuem. Um INNER JOIN retornaria apenas 6 linhas (os suspeitos com ocorrência). Um LEFT JOIN retornaria 10 linhas: as 6 com ocorrência preenchida e as 4 com campos de ocorrência como NULL. É exatamente essa preservação que faz o LEFT JOIN ser usado quando se quer listar todos os registros de uma tabela, mesmo os que não têm correspondência.

A pegadinha da questão está em interpretar o LEFT JOIN como se fosse um INNER JOIN. O candidato que pensa que a consulta retorna apenas suspeitos com ocorrência associada cai na alternativa E ("uma ocorrência apenas") ou na A ("crimes sem ocorrência"). Mas o LEFT JOIN não filtra — ele preserva. A consulta retorna todos os suspeitos, com ou sem ocorrência, e por isso estão associados a todos os crimes cadastrados.

Guarde a distinção central: INNER JOIN = apenas correspondências; LEFT JOIN = todas as linhas da esquerda + correspondências da direita (com NULL onde não houver). É essa fronteira que separa as alternativas desta questão.

1INNER JOIN
Apenas correspondências
Exclui sem par
2LEFT JOIN
Todos da esquerda
Preserva sem correspondência
NULL na direita
3RIGHT JOIN
Todos da direita
Preserva sem correspondência
NULL na esquerda
4FULL JOIN
Todos de ambos
Preserva sem correspondência
NULL onde faltar
Junções SQL
LEVELsoulevel.com.br
Junções SQL: INNER JOIN (Apenas correspondências, Exclui sem par); LEFT JOIN (Todos da esquerda, Preserva sem correspondência, NULL na direita); RIGHT JOIN (Todos da direita, Preserva sem correspondência, NULL na esquerda); FULL JOIN (Todos de ambos, Preserva sem correspondência, NULL onde faltar)

Alternativa A — ❌ Incorreta

Afirma que a consulta revela suspeitos associados a "crimes sem ocorrência". O LEFT JOIN retorna todos os suspeitos, não apenas aqueles sem ocorrência. Para retornar apenas suspeitos sem ocorrência, seria necessário adicionar uma cláusula WHERE filtrando os campos da tabela de ocorrências como NULL (ex.: WHERE Ocorrencia.id IS NULL). Sem esse filtro, o resultado inclui tanto suspeitos com ocorrência quanto sem.

Alternativa B — ❌ Incorreta

Afirma que a consulta revela suspeitos associados a "nenhum crime". Isso seria verdadeiro apenas se a consulta tivesse um filtro que excluísse suspeitos com ocorrência, o que não ocorre. O LEFT JOIN preserva todos os suspeitos da tabela à esquerda, incluindo aqueles que possuem ocorrências associadas. A alternativa confunde o comportamento do LEFT JOIN com uma consulta que filtra apenas registros sem correspondência.

Alternativa C — ❌ Incorreta

Afirma que a consulta revela suspeitos associados a "ocorrências sem crime". Essa alternativa inverte o sentido da junção. O LEFT JOIN preserva a tabela da esquerda (suspeitos), não a da direita (ocorrências). Para retornar ocorrências sem crime, seria necessário um RIGHT JOIN ou inverter a ordem das tabelas no FROM. Além disso, a consulta seleciona CPF e nome de suspeitos, não dados de ocorrências.

Alternativa D — ✅ Correta ⟵ GABARITO

A consulta revela suspeitos associados a todos os crimes cadastrados. O LEFT JOIN preserva todos os registros da tabela à esquerda (suspeitos), mesmo aqueles sem correspondência na tabela de ocorrências. Portanto, o resultado inclui todos os suspeitos, com ou sem ocorrência, o que significa que estão associados a todos os crimes cadastrados no banco. Essa é a interpretação correta do comportamento do LEFT JOIN.

Alternativa E — ❌ Incorreta

Afirma que a consulta revela suspeitos associados a "uma ocorrência apenas". O LEFT JOIN não limita o resultado a uma ocorrência por suspeito. Se um suspeito tiver múltiplas ocorrências, ele aparecerá múltiplas vezes no resultado (uma para cada ocorrência). A alternativa confunde o LEFT JOIN com uma consulta que agrupa ou limita o número de ocorrências, o que não é o caso.

NÃO CAIA NESSA!

A banca explora a confusão entre INNER JOIN e LEFT JOIN. O candidato que lê a consulta e pensa que ela retorna apenas suspeitos com ocorrência cai nas alternativas A, B ou E. Mas o LEFT JOIN preserva todos os registros da tabela à esquerda, preenchendo com NULL os campos sem correspondência. Lembre-se: LEFT JOIN = todos da esquerda + correspondências da direita. Com treino, você identifica essa pegadinha de longe 💪.

PEGA ESSA DICA!

Para resolver questões de junção SQL, identifique primeiro o tipo de junção (INNER, LEFT, RIGHT, FULL) e a tabela preservada. Depois, pergunte-se: "a consulta filtra registros sem correspondência?" Se não houver WHERE filtrando NULL, a junção externa retorna todos os registros da tabela preservada. Essa análise rápida resolve a maioria das questões de interpretação de consultas SQL.

Gabarito: letra D

Link permanente: /questoes/fg131894