Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2026
Banco de Dados›Consultas 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
APromotor WHERE PromotorID = Processo. PromotorID;
BProcesso JOIN Promotor USING ProcessoID;
CPromotor JOIN ON Processo WHERE Promotor. PromotorID = Processo. PromotorID;
DPromotor WHERE Processo ON Promotor. PromotorID = Processo. PromotorID;
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 JOIN — FROM 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.