Pular para o conteúdo principal

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

Banco de DadosConsultas 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 é

  1. ASELECT servidores.nome JOIN departamentos.nome_departamento ON servidores.id_departamento = departamentos.id_departamento FROM servidores, departamentos;
  2. BSELECT servidores.nome, departamentos.nome_departamento FROM servidores INNER JOIN departamentos ON servidores.id_departamento = departamentos.id_departamento;
  3. CSELECT s.nome, d.nome_departamento FROM servidores s, departamentos d WHERE RIGHT JOIN s.id_departamento = d.id_departamento;
  4. DSELECT nome, nome_departamento FROM servidores, ALTER JOIN departamentos WHERE id_departamento = id_departamento;
  5. 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 — SELECTFROMJOINON — 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.

Gabarito: letra B

Link permanente: /questoes/fc150365