Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2023

Banco de DadosSQL
Código
ce163359
Banca
CESPE / CEBRASPE
Órgão
TBG
Ano
2023
Nível
Superior
Cargo
Ênfase: Desenvolvimento de Software
Imagem associada para resolução da questãoConsiderando 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.Imagem associada para resolução da questão
  1. CCerto
  2. 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:

  1. Com a função de agregação MAX: SELECT MAX(Salario) FROM funcionario — retorna o maior valor da coluna Salario.

  2. 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.

  1. 1Subconsulta retorna MAX(Salario)
  2. 2UPDATE aplica o valor
  3. 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.

Gabarito: Certo (C).

Link permanente: /questoes/ce163359