Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2025
Banco de Dados›SQL
Código
ce220598
Banca
CESPE / CEBRASPE
Órgão
TRF - 6ª REGIÃO
Ano
2025
Nível
Médio
Cargo
Técnico Judiciário – Área: Apoio Especializado – Especialidade: Desenvolvimento de Sistemas de Informação
A partir das tabelas departamento e funcionario precedentes, julgue o item a seguir, relativo a SQL.A execução da seguinte consulta SQL retornará o nome dos funcionários e seus respectivos departamentos e salários.SELECT f.nome, d.nome_departamento, f.salarioFROM funcionarios f INNER JOIN departamentos dON f.id_departamento = d.id;
CCerto
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”.
SE LIGUE NESSA!
Esta questão depende das tabelas departamento e funcionario apresentadas no enunciado original, que não estão disponíveis aqui. O raciocínio abaixo é o método de resolução — confira os nomes das colunas e a estrutura das tabelas na prova original.
SQL: INNER JOIN e projeção de colunas
Gabarito: Certo (C). A consulta SELECT f.nome, d.nome_departamento, f.salario FROM funcionarios f INNER JOIN departamentos d ON f.id_departamento = d.id; está sintaticamente correta e retornará o nome dos funcionários, o nome de seus departamentos e seus salários, desde que as tabelas e colunas referenciadas existam com esses nomes exatos. O INNER JOIN combina as linhas das duas tabelas onde a condição f.id_departamento = d.id é verdadeira, e a projeção seleciona as três colunas especificadas.
O INNER JOIN é um dos tipos de junção (JOIN) da linguagem SQL, usado para combinar registros de duas ou mais tabelas com base em uma condição de correspondência entre colunas. No caso, a condição é f.id_departamento = d.id, que relaciona a chave estrangeira id_departamento da tabela funcionarios com a chave primária id da tabela departamentos. O resultado da junção é um conjunto de linhas que contém todas as colunas das duas tabelas, mas apenas para os pares que satisfazem a condição. Em seguida, a cláusula SELECT projeta (seleciona) apenas as colunas listadas: f.nome, d.nome_departamento e f.salario. O uso de apelidos (f e d) é uma prática comum para abreviar os nomes das tabelas e evitar ambiguidade quando colunas de tabelas diferentes têm o mesmo nome.
Na prática, se a tabela funcionarios tiver um funcionário com id_departamento igual a 2, e a tabela departamentos tiver um departamento com id igual a 2, a linha resultante conterá o nome do funcionário, o nome do departamento 2 e o salário do funcionário. Funcionários sem departamento correspondente (ou departamentos sem funcionários) não aparecem no resultado, pois o INNER JOIN exige correspondência nas duas tabelas. Essa é a diferença fundamental para o LEFT JOIN, que retornaria todos os funcionários, mesmo aqueles sem departamento, preenchendo as colunas do departamento com NULL.
A pegadinha que a banca pode explorar é a confusão entre INNER JOIN e LEFT JOIN. O INNER JOIN descarta linhas sem correspondência, enquanto o LEFT JOIN preserva todas as linhas da tabela à esquerda. Nesta questão, o comando usa INNER JOIN, então apenas funcionários com departamento válido serão retornados. Outra pegadinha possível é a troca dos nomes das colunas ou tabelas, mas o enunciado afirma que as tabelas são departamento e funcionario, e a consulta usa funcionarios e departamentos (no plural). Se os nomes reais forem diferentes, a consulta falharia, mas a questão presume que os nomes estão corretos.
Guarde a distinção entre INNER JOIN (só pares correspondentes) e LEFT JOIN (todos da esquerda, com NULL à direita): é exatamente nela que as alternativas de questões sobre junções se dividem.
Item — ✅ CERTO ⟵ GABARITO
A consulta está correta. A sintaxe SELECT colunas FROM tabela1 alias1 INNER JOIN tabela2 alias2 ON condição é válida. A projeção f.nome, d.nome_departamento, f.salario retorna exatamente o que o enunciado pede: nome do funcionário, nome do departamento e salário. A condição de junção f.id_departamento = d.id relaciona corretamente as tabelas. Portanto, a execução retornará os dados esperados, assumindo que as tabelas e colunas existam com esses nomes.