Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2025
Banco de Dados›Consultas e Comandos em SQL
Código
fc150365
Banca
FCC
Órgão
CGE PI
Ano
2025
Cargo
Aud Gov ( )
A equipe de uma Secretaria da Fazenda precisa gerar um relatório consolidado que combine informações de duas tabelas:
servidores: Contém dados dos servidores (id_servidor, nome, cargo, id_departamento).
departamentos: Contém dados dos departamentos (id_departamento, nome_departamento, sigla).
O objetivo é listar o nome do servidor e o nome do departamento ao qual ele pertence.
A expressão (comando) SQL ANSI que realiza corretamente o objetivo é
ASELECT servidores.nome JOIN departamentos.nome_departamento ON servidores.id_departamento = departamentos.id_departamento FROM servidores, departamentos;
BSELECT servidores.nome, departamentos.nome_departamento FROM servidores INNER JOIN departamentos ON servidores.id_departamento = departamentos.id_departamento;
CSELECT s.nome, d.nome_departamento FROM servidores s, departamentos dWHERE RIGHT JOIN s.id_departamento = d.id_departamento;
DSELECT nome, nome_departamento FROM servidores, ALTER JOIN departamentos WHERE id_departamento = id_departamento;
ESELECT servidores.nome, departamentos.nome_departamento WHERE LEFT JOIN servidores.id_departamento = departamentos.id_departamento;
Revelar gabarito e comentário▾
GabaritoB — SELECT servidores.nome, departamentos.nome_departamento FROM servidores INNER JOIN departamentos ON servidores.id_departamento = departamentos.id_departamento;
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 B. O comando correto para listar o nome do servidor e o nome do departamento ao qual ele pertence é SELECT servidores.nome, departamentos.nome_departamento FROM servidores INNER JOIN departamentos ON servidores.id_departamento = departamentos.id_departamento; — essa é a sintaxe padrão do SQL ANSI para combinar duas tabelas com base em uma condição de igualdade entre colunas relacionadas.
A questão cobra o conceito de junção (JOIN) em SQL, que é a operação fundamental para combinar dados de duas ou mais tabelas em um banco de dados relacional. Quando temos uma chave estrangeira (como id_departamento na tabela servidores) que referencia a chave primária de outra tabela (como id_departamento na tabela departamentos), precisamos de um JOIN para trazer informações de ambas em um único resultado. O INNER JOIN é o tipo mais comum: ele retorna apenas as linhas que têm correspondência nas duas tabelas, ou seja, servidores que possuem um departamento válido. A sintaxe correta exige que a cláusula ON venha logo após o JOIN, especificando a condição de igualdade entre as colunas das duas tabelas.
Na prática, imagine que a tabela servidores tenha os registros (1, 'Ana', 'Auditora', 10) e (2, 'Bruno', 'Analista', 20), e a tabela departamentos tenha (10, 'Fiscal', 'FIS') e (20, 'Tributação', 'TRI'). O comando da alternativa B retornaria:
nome
nome_departamento
Ana
Fiscal
Bruno
Tributação
Isso é exatamente o que o relatório consolidado precisa. A pegadinha da questão está em reconhecer a ordem correta das cláusulas e a sintaxe válida do JOIN: muitas alternativas trocam a posição do ON, usam palavras-chave inexistentes (como ALTER JOIN ou RIGHT JOIN no lugar errado) ou omitem a cláusula FROM.
Guarde a estrutura canônica do INNER JOIN: SELECT colunas FROM tabela1 INNER JOIN tabela2 ON condição_de_junção;. É essa sequência — SELECT → FROM → JOIN → ON — que separa a alternativa correta das demais.
Alternativa A — ❌ Incorreta
O erro está na ordem das cláusulas: o JOIN aparece antes do FROM, o que é inválido. A sintaxe correta exige que o FROM venha primeiro, seguido do JOIN e da condição ON. Além disso, a lista de colunas no SELECT está separada por JOIN em vez de vírgula, o que também é incorreto.
Alternativa B — ✅ Correta ⟵ GABARITO
Esta é a sintaxe padrão do SQL ANSI para INNER JOIN. A cláusula SELECT lista as colunas desejadas (servidores.nome e departamentos.nome_departamento), o FROM indica a primeira tabela, o INNER JOIN indica a segunda, e o ON define a condição de igualdade entre as chaves (servidores.id_departamento = departamentos.id_departamento). Essa estrutura é exatamente a que o enunciado pede.
Alternativa C — ❌ Incorreta
O erro está no uso de RIGHT JOIN dentro da cláusula WHERE. A sintaxe correta do RIGHT JOIN (assim como de qualquer JOIN) exige que ele apareça na cláusula FROM, seguido da condição ON. Colocá-lo no WHERE é inválido. Além disso, a condição s.id_departamento = d.id_departamento está correta, mas a estrutura geral do comando está errada.
Alternativa D — ❌ Incorreta
O erro está no uso de ALTER JOIN, que não existe no SQL. ALTER é um comando da DDL (Data Definition Language) usado para modificar a estrutura de tabelas, não para realizar junções. A sintaxe correta seria INNER JOIN (ou outro tipo de JOIN) na cláusula FROM, com a condição no ON. Além disso, a condição WHERE id_departamento = id_departamento é ambígua, pois não especifica de qual tabela cada coluna vem.
Alternativa E — ❌ Incorreta
O erro está na ausência da cláusula FROM e no uso de LEFT JOIN dentro do WHERE. A sintaxe correta do LEFT JOIN exige que ele apareça na cláusula FROM, seguido da condição ON. Sem o FROM, o comando não sabe de onde buscar os dados. Além disso, a condição servidores.id_departamento = departamentos.id_departamento está correta, mas a estrutura geral está inválida.
NÃO CAIA NESSA!
A banca explora a confusão entre a ordem das cláusulas e a posição do JOIN. Muitos candidatos sabem que precisam de um JOIN, mas erram ao colocá-lo no WHERE ou ao usar palavras-chave inventadas como ALTER JOIN. Lembre-se: o JOIN sempre vem na cláusula FROM, e a condição de junção sempre vem no ON. Com treino, você reconhece essas armadilhas de longe 💪.
PEGA ESSA DICA!
Para questões de JOIN, monte mentalmente a estrutura: SELECT → colunas → FROM → tabela1 → JOIN → tabela2 → ON → condição. Se alguma alternativa fugir dessa ordem ou usar uma palavra-chave que você não conhece (como ALTER JOIN), elimine-a imediatamente. Essa é a técnica mais rápida para acertar esse tipo de questão.