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.

Clique para visualizar este comentário

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