Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2023
Banco de Dados›SQL
Código
ce163359
Banca
CESPE / CEBRASPE
Órgão
TBG
Ano
2023
Nível
Superior
Cargo
Ênfase: Desenvolvimento de Software
Considerando que a tabela precedente, de nome funcionario, possui apenas os registros mostrados, julgue o item subsequente.A seguir, é apresentado o comando correto em SQL para se alterar o valor do salário (Salario) para o maior salário da tabela apenas para o funcionário que possui IdFuncionario igual a 1.
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”.
SQL: Comando UPDATE com subconsulta
Gabarito: Certo (C). O comando apresentado está correto: ele utiliza a instrução UPDATE com uma subconsulta na cláusula SET para atribuir ao salário do funcionário com IdFuncionario = 1 o maior salário da tabela, conforme a sintaxe padrão da linguagem SQL.
A questão cobra o comando UPDATE, que é uma instrução da sublinguagem DML (Data Manipulation Language) do SQL, responsável por modificar dados existentes em uma tabela. A sintaxe básica do UPDATE é:
UPDATE nome_da_tabela
SET coluna1 = valor1, coluna2 = valor2, ...
WHERE condição;
No caso, o comando precisa alterar o valor da coluna Salario para o maior salário da tabela, mas apenas para o funcionário com IdFuncionario igual a 1. Para isso, é necessário usar uma subconsulta que retorne o maior salário. A subconsulta pode ser escrita de duas formas principais:
Com a função de agregação MAX: SELECT MAX(Salario) FROM funcionario — retorna o maior valor da coluna Salario.
Com ORDER BY ... DESC LIMIT 1: SELECT Salario FROM funcionario ORDER BY Salario DESC LIMIT 1 — ordena os salários em ordem decrescente e retorna o primeiro, que é o maior.
A subconsulta pode ser usada diretamente na cláusula SET, como em:
UPDATE funcionario
SET Salario = (SELECT MAX(Salario) FROM funcionario)
WHERE IdFuncionario = 1;
Essa é a forma mais comum e correta. A subconsulta é executada primeiro, retornando o maior salário, e depois o UPDATE aplica esse valor apenas à linha que atende à condição WHERE IdFuncionario = 1. O comando atende exatamente ao que o enunciado pede.
É importante destacar que a subconsulta na cláusula SET é uma técnica válida e amplamente utilizada. Ela permite que o valor a ser atribuído seja calculado dinamicamente a partir dos dados da própria tabela ou de outras tabelas. No caso, como a subconsulta retorna um único valor (o maior salário), não há erro de sintaxe ou de lógica.
A pegadinha que a banca poderia explorar seria a ausência da cláusula WHERE, o que alteraria o salário de todos os funcionários, ou o uso incorreto da subconsulta, como retornar mais de uma linha. No entanto, o comando apresentado está correto.
1Subconsulta retorna MAX(Salario)
2UPDATE aplica o valor
3WHERE restringe a IdFuncionario = 1
LEVEL · soulevel.com.br
Item — ✅ CERTO
O comando UPDATE funcionario SET Salario = (SELECT MAX(Salario) FROM funcionario) WHERE IdFuncionario = 1; está correto. Ele utiliza a subconsulta SELECT MAX(Salario) FROM funcionario para obter o maior salário da tabela e o atribui apenas ao funcionário com IdFuncionario = 1, graças à cláusula WHERE. A sintaxe está de acordo com o padrão SQL, e a subconsulta retorna um único valor, o que é obrigatório para uso na cláusula SET.
PEGA ESSA DICA!
Em questões de SQL, verifique sempre se a subconsulta retorna um único valor quando usada na cláusula SET. Se retornar mais de uma linha, o comando falhará. Além disso, lembre-se de que a cláusula WHERE é essencial para restringir a atualização apenas aos registros desejados — sem ela, todos os registros seriam alterados.