Outro exemplo um pouco mais complexo: suponha que desejássemos alterar para “8,9” a nota no histórico escolar do aluno de matrícula “332/5”, da matéria de Ciências, do ano de 2010, da 5ª série. Note que a tabela de histórico escolar não possui chave primária para identificação do registro. Dessa forma precisamos construir uma cláusula WHERE com todos os campos que identifiquem e selecionem apenas esse registro.
Veja como seria a instrução:
UPDATE HISTORICO_ESCOLAR
SET Nota = 8.9
WHERE Ano = 2010
AND Serie = “5a”
AND ID_Aluno = (SELECT ID_Aluno FROM ALUNO WHERE Matricula = “332/5”)
AND Disciplina = (SELECT ID_Disciplina FROM DISCIPLINA Where Nome = “Ciências”)
Observe que como não sabemos de antemão os valores de ID_Aluno e de ID_Disciplina, precisamos utilizar instruções SELECT para identificar esses registros.
Vamos pensar em outro cenário agora. Suponha que exista uma tabela denominada PRODUTOS, que possua um campo de nome ValorDeVenda. Vamos construir uma instrução UPDATE que acrescente 10% ao valor de venda de todos os produtos:
UPDATE PRODUTOS, SET ValorDeVenda = ValorDeVenda * 1.1
Note agora que o novo valor do campo Valor de venda será o valor de venda atual multiplicado por 1,1, ou seja, 10% de acréscimo.
Também podemos utilizar os atributos NULL ou DEFAULT como valores para um campo. Vamos ver um exemplo com os dois atributos:
Para uma tabela de produtos, alterar a marca de todos os produtos para o valor padrão do modelo de dados e o atributo de preço de compra para o valor nulo:
UPDATE Produtos SET Marca = DEFAULT, PrecoCompra = NULL