Analise o comando SQL mostrado a seguir juntamente com a in...

Próximas questões
Com base no mesmo assunto
Q738858 Banco de Dados

Analise o comando SQL mostrado a seguir juntamente com a instância da tabela C.

update C

set b = (select max(b) from C)

a b

1 2

2 4

3 7

4 8

Assinale a opção que apresenta o número de registros da instância da tabela C que sofreram alguma alteração em seus atributos, em relação à instância mostrada, devido à execução desse comando.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: D - 3.

Para compreender o comando apresentado, precisamos entender o que a cláusula UPDATE realiza em SQL. O comando UPDATE é usado para modificar os valores existentes em uma ou mais colunas de uma tabela. Aqui, ele está sendo aplicado a toda a tabela C, sem uma condição WHERE, o que significa que todas as linhas serão afetadas.

O comando SET dentro do UPDATE indica qual coluna terá seu valor alterado, e para qual valor ele será alterado. Neste caso, estamos definindo o valor de b para o maior valor atualmente presente na coluna b de toda a tabela C, o que é determinado pela subconsulta (SELECT MAX(b) FROM C).

O funcionamento da subconsulta é como segue: ela procura o maior valor (MAX) da coluna b na tabela. Portanto, ela retorna 8, que é o valor máximo encontrado na coluna b dos dados apresentados.

Com base nisso, cada valor de b na tabela C será atualizado para 8. Portanto, todas as linhas onde o valor de b é menos que 8 serão modificadas. Olhando para a instância fornecida, podemos observar que os primeiros três registros têm valores em b que são menores que 8. Sendo assim:

  • O registro com a = 1 terá b alterado de 2 para 8.
  • O registro com a = 2 terá b alterado de 4 para 8.
  • O registro com a = 3 terá b alterado de 7 para 8.

O quarto registro já possui b = 8, logo, não ocorrerá nenhuma alteração nele.

Resumindo, 3 registros sofrerão atualização em seus valores, fazendo da Alternativa D a correta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

D)

A linha que contém o 8 não será alterada.

Eu entraria com recurso nessa questão, update sem WHERE atualiza TODOS os registros.

A última linha foi alterada sim, ela é sobrescrita fisicamente no banco apesar de o valor continuar o mesmo.

Se fizer o teste no Oracle, ele iria retornar "4 rows updated", indicando que houve alteração em TODAS as linhas.

"que sofreram alguma alteração em seus atributos". interpretação é tudo nessa FGV, tudo é questão de interpretação .-.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo