Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — CESPE / CEBRASPE 2025

Banco de DadosBanco de Dados Relacionais
Código
ce208445
Banca
CESPE / CEBRASPE
Órgão
MPE-CE
Ano
2025
Nível
Superior
Cargo
Analista Ministerial - Especialidade: Ciências da Computação
        A seguir, são apresentadas as tabelas Pessoas, Processos e Partes que existem em um banco de dados: a primeira armazena dados acerca das pessoas envolvidas nos processos; a segunda armazena dados dos processos; e a terceira relaciona pessoas aos processos, com indicação do papel de cada uma (autor, réu, testemunha, etc.). Por fim, uma mesma pessoa pode estar envolvida em mais de um processo, e assumir diferentes papéis em cada um deles.  

Imagem da questão
A partir das informações apresentadas, julgue o item que se segue.A execução da consulta SQL a seguir listará todos os processos, inclusive aqueles que ainda não têm partes associadas, e exibirá o nome das pessoas e os seus respectivos papéis nos processos em que estão envolvidas.Imagem associada para resolução da questão
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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 preservação de linhas sem correspondência

Gabarito: Certo. A afirmação está correta porque a consulta SQL descrita utiliza um LEFT JOIN (junção externa à esquerda), que preserva todas as linhas da tabela à esquerda (Processos), mesmo aquelas que não possuem correspondência na tabela à direita (Partes). Para essas linhas sem correspondência, os campos da tabela à direita (nome da pessoa e papel) serão preenchidos com NULL. O LEFT JOIN é exatamente o mecanismo que garante a listagem de todos os processos, inclusive os que ainda não têm partes associadas.

O LEFT JOIN é um dos três tipos de junção externa (externa à esquerda, à direita e completa) e é o mais cobrado em provas. Ele é a resposta para o requisito "listar todos os registros de uma tabela, mesmo aqueles sem correspondência na outra". A lógica é simples: a tabela à esquerda do comando FROM é a tabela "preservada" — todas as suas linhas aparecem no resultado. Se houver uma linha na tabela da esquerda sem nenhuma linha correspondente na tabela da direita, os campos da tabela da direita aparecem como NULL no resultado.

Para entender a diferença, compare com o INNER JOIN (junção interna), que é o tipo mais comum: ele retorna apenas as linhas que têm correspondência em ambas as tabelas. Se um processo não tiver partes associadas, ele simplesmente não apareceria no resultado de um INNER JOIN. É exatamente essa a distinção crucial: o INNER JOIN descarta as linhas sem par, enquanto o LEFT JOIN as preserva.

Vamos a um exemplo concreto. Suponha que a tabela Processos tenha os processos P1, P2 e P3, e a tabela Partes relacione apenas P1 (com o autor João) e P2 (com o réu Maria). O processo P3 não tem nenhuma parte associada.

  • Com um INNER JOIN, o resultado traria apenas P1 e P2, pois P3 não tem correspondência em Partes.

  • Com um LEFT JOIN (Processos à esquerda), o resultado traria P1, P2 e P3. Para P3, os campos nome e papel (provenientes de Partes) seriam NULL.

É exatamente isso que o enunciado descreve: "listará todos os processos, inclusive aqueles que ainda não têm partes associadas". A pegadinha da banca, se houvesse, seria trocar o LEFT JOIN por um INNER JOIN, o que faria a afirmação ser falsa. Mas, como a consulta usa LEFT JOIN, a afirmação está correta.

A distinção entre os tipos de junção é o critério decisivo para esta questão. Guarde a regra: LEFT JOIN preserva a tabela da esquerda; INNER JOIN preserva apenas as interseções. É nessa fronteira que a banca costuma armar a pegadinha.

Tipos de JOIN
  • 1INNER JOIN
    • Só linhas com correspondência nas duas tabelas
    • Processo sem parte → não aparece
  • 2LEFT JOIN
    • Preserva TODAS as linhas da tabela à esquerda
    • Sem correspondência → campos da direita = NULL
    • Processo sem parte → aparece com NULL
  • 3RIGHT JOIN
    • Preserva TODAS as linhas da tabela à direita
  • 4FULL JOIN
    • Preserva linhas das duas tabelas
LEVEL · soulevel.com.br

Alternativa C — ✅ Certo ⟵ GABARITO

A afirmação está correta. A consulta SQL descrita utiliza LEFT JOIN, que é a junção externa à esquerda. Esse tipo de junção retorna todas as linhas da tabela à esquerda (no caso, Processos), mesmo aquelas que não possuem correspondência na tabela à direita (Partes). Para os processos sem partes associadas, os campos da tabela Partes (nome da pessoa e papel) serão preenchidos com NULL. Isso atende exatamente ao que o enunciado pede: listar todos os processos, inclusive os que ainda não têm partes associadas, exibindo o nome das pessoas e seus papéis quando existirem.

PEGA ESSA DICA!

Para identificar rapidamente o tipo de junção em uma questão, procure pela palavra-chave LEFT, RIGHT ou FULL antes de JOIN. Se a consulta usar apenas JOIN ou INNER JOIN, ela retorna somente as linhas com correspondência em ambas as tabelas. Se usar LEFT JOIN, a tabela à esquerda do comando é totalmente preservada. Essa é a diferença que decide se um relatório perde ou não registros sem correspondência.

Gabarito: letra C (Certo).

Link permanente: /questoes/ce208445