Analise o comando SQL mostrado a seguir juntamente com a in...
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.
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