Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2026

Banco de DadosConsultas e Comandos em SQL
Código
fc142087
Banca
FCC
Órgão
MPE SE
Ano
2026
Cargo
Ana ( )
Em um banco de dados de um Ministério Público, aberto e em condições ideais, existem duas tabelas:   Promotor: contem os campos PromotorID, Nome e Email. Processo: contem os campos ProcessoID, PromotorID e DataAbertura.   Para listar o nome do promotor e a data de abertura de cada processo, deve-se utilizar o comando SQL ANSI: SELECT Nome, DataAbertura FROM
  1. APromotor WHERE PromotorID = Processo. PromotorID;
  2. BProcesso JOIN Promotor USING ProcessoID;
  3. CPromotor JOIN ON Processo WHERE Promotor. PromotorID = Processo. PromotorID;
  4. DPromotor WHERE Processo ON Promotor. PromotorID = Processo. PromotorID;
  5. EPromotor P INNER JOIN Processo Pr ON P.PromotorID = Pr.PromotorID;
Revelar gabarito e comentário

GabaritoE — Promotor P INNER JOIN Processo Pr ON P.PromotorID = Pr.PromotorID;

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”.

Consultas SQL: junção de tabelas com INNER JOIN

Gabarito: letra E. Para listar o nome do promotor e a data de abertura de cada processo, é necessário combinar as tabelas Promotor e Processo por meio de uma junção interna (INNER JOIN), relacionando as colunas PromotorID de ambas as tabelas. A alternativa E apresenta a sintaxe correta: Promotor P INNER JOIN Processo Pr ON P.PromotorID = Pr.PromotorID, com os apelidos P e Pr para as tabelas e a condição de junção explícita na cláusula ON.

A consulta precisa de dados de duas tabelas diferentes: o nome do promotor está na tabela Promotor, enquanto a data de abertura está na tabela Processo. Para relacionar essas informações, utiliza-se a operação de junção (JOIN), que combina linhas de duas tabelas com base em uma condição — neste caso, a igualdade entre as chaves PromotorID. A sintaxe padrão do SQL ANSI para uma junção interna é SELECT colunas FROM tabela1 JOIN tabela2 ON condição_de_junção. A cláusula ON especifica como as tabelas se relacionam, e é aqui que a condição P.PromotorID = Pr.PromotorID entra: ela garante que apenas os processos cujo PromotorID exista na tabela Promotor sejam retornados, juntamente com o nome do promotor correspondente.

Na prática, imagine que a tabela Promotor tenha os registros (1, 'Ana', '[email protected]') e (2, 'Bruno', '[email protected]'), e a tabela Processo tenha (101, 1, '2024-01-15') e (102, 2, '2024-02-20'). A junção Promotor P INNER JOIN Processo Pr ON P.PromotorID = Pr.PromotorID produziria o resultado: (1, 'Ana', '2024-01-15') e (2, 'Bruno', '2024-02-20'). Se houvesse um processo com PromotorID que não existisse na tabela Promotor, ele seria excluído do resultado, pois a junção interna só retorna linhas com correspondência em ambas as tabelas.

A distinção crucial aqui é entre a sintaxe correta do JOIN e as formas incorretas que misturam cláusulas ou usam palavras-chave indevidas. O JOIN exige a cláusula ON para a condição de junção, e não WHERE (que é usado para filtrar após a junção) nem USING sem parênteses. Além disso, a ordem das palavras-chave é fixa: FROM tabela1 JOIN tabela2 ON condição. A banca explora exatamente esses erros de sintaxe, apresentando alternativas que trocam ON por WHERE, omitem a condição ou usam USING incorretamente.

Guarde a estrutura canônica do INNER JOINFROM tabela1 JOIN tabela2 ON condição — e a função de cada cláusula: ON define a relação entre as tabelas, enquanto WHERE filtra o resultado já combinado. É nessa fronteira que as alternativas se dividem.

INNER JOIN (SQL ANSI)
  • 1Sintaxe canônica
    • FROM tabela1 JOIN tabela2 ON condição
    • ON define a relação entre tabelas
    • WHERE filtra o resultado já combinado
  • 2Erros comuns de sintaxe
    • Trocar ON por WHERE
    • USING sem parênteses
    • Inverter ordem das cláusulas
    • Misturar WHERE com ON
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A alternativa usa WHERE PromotorID = Processo.PromotorID sem a cláusula JOIN. Em SQL, para combinar duas tabelas, é obrigatório usar JOIN (ou a sintaxe antiga com vírgula na cláusula FROM). A cláusula WHERE sozinha não estabelece a junção; ela apenas filtra linhas de uma única tabela. Além disso, a referência Processo.PromotorID não é válida sem que a tabela Processo esteja na cláusula FROM.

Alternativa B — ❌ Incorreta

A alternativa usa JOIN ... USING ProcessoID, mas a sintaxe correta do USING exige parênteses: USING (PromotorID). Além disso, a coluna ProcessoID não existe na tabela Processo — o campo correto é PromotorID. O USING é uma forma abreviada de junção que exige que a coluna de junção tenha o mesmo nome em ambas as tabelas, o que não é o caso aqui (a coluna é PromotorID nas duas, mas a alternativa escreve ProcessoID).

Alternativa C — ❌ Incorreta

A alternativa inverte a ordem das cláusulas: Promotor JOIN ON Processo WHERE .... A sintaxe correta é FROM tabela1 JOIN tabela2 ON condição, e não JOIN ON tabela2. A cláusula ON deve vir depois da segunda tabela, e a condição de junção deve ser especificada dentro dela. A forma apresentada é inválida em SQL.

Alternativa D — ❌ Incorreta

A alternativa usa WHERE Processo ON ..., misturando WHERE com ON. A cláusula ON é exclusiva da junção (JOIN), enquanto WHERE é usada para filtrar o resultado. Além disso, não há cláusula JOIN para combinar as tabelas, tornando a consulta inválida. A condição de junção deve estar na cláusula ON da junção, não na cláusula WHERE.

Alternativa E — ✅ Correta ⟵ GABARITO

A alternativa apresenta a sintaxe correta do INNER JOIN: Promotor P INNER JOIN Processo Pr ON P.PromotorID = Pr.PromotorID. Os apelidos P e Pr são usados para abreviar os nomes das tabelas, e a condição de junção P.PromotorID = Pr.PromotorID relaciona as duas tabelas pela chave PromotorID. A consulta completa SELECT Nome, DataAbertura FROM Promotor P INNER JOIN Processo Pr ON P.PromotorID = Pr.PromotorID retorna o nome do promotor e a data de abertura de cada processo, exatamente como pedido no enunciado.

NÃO CAIA NESSA!

A banca explora a confusão entre as cláusulas WHERE e ON. O WHERE filtra linhas de uma única tabela, enquanto o ON define a condição de junção entre duas tabelas. Nas alternativas A e D, o WHERE é usado indevidamente para tentar combinar as tabelas, o que é inválido. Lembre-se: para juntar tabelas, use JOIN ... ON; para filtrar o resultado, use WHERE.

PEGA ESSA DICA!

Na hora da prova, identifique primeiro se a consulta precisa de dados de mais de uma tabela. Se sim, procure a alternativa que usa JOIN com a cláusula ON e a condição de igualdade entre as chaves. Verifique também se os nomes das colunas estão corretos e se os apelidos (se usados) são consistentes. Essa checagem rápida elimina a maioria dos distratores.

Gabarito: letra E

Link permanente: /questoes/fc142087