Alterando registros em SQL
outubro 25, 2007
Vou iniciar este post escrevendo sobre como alterar registros em tabelas utilizando SQL. A sintaxe é simples:
UPDATE
[NOME_TABELA]
SET
[NOME_CAMPO] = [EXPRESSÃO][…n]
WHERE
{
[CONDICAO_SQL]
}
Como podem ver, inicia-se com a palavra-chave UPDATE, em seguida insere o nome da tabela desejada para ser alterada, logo após a palavra chave SET e o nome do(s) campo(s) à ser(em) alterado(s) e uma possível condição, caso necessite atualizar registros específicos.
UPDATE
Livros
SET
Nome = ‘The Art of War’
WHERE
LivroID = 5
Pode-se utilizar a instrução UPDATE unindo informações de diversas tabelas, caso precise comparar um valor que a tabela que deseja alterar não possua.
UPDATE
Livros
SET
L.Nome = ‘The Art of War’
FROM
Livros L,
Autores A
WHERE
L.AutorID = A.AutorID
AND
A.Nascimento BETWEEN ‘1950-01-01 00:00:00.000’ AND ‘1970-01-01 23:59:59.999’
A instrução SQL acima irá alterar todos os registros do campo ‘Nome’ da tabela ‘Livros’ cujo o autor coincidir com o do livro e a data de nascimento (Nascimento) do autor estiver entre 1950 e 1970.
Também pode utilizar funções no campo que deseja alterar.
UPDATE
Livros
SET
Valor = CAST(RAND() * 150 AS MONEY)
WHERE
ID > 10
Acima será alterados todos os livros que o ‘ID’ (chave primária) for maior que 10. A função RAND retorna um número aleatório entre 0 e o número especificado (no nosso caso 100) e após isso é feito uma conversão para o tipo MONEY, que indica que é moeda.
Existe outra maneira de atualizar um registro de uma tabela unindo informações de uma outra tabela. Isto pode ser feito utilizando o operador JOIN, que serve para juntar informações de tabelas que possuem registros diferentes, porém que tenham campo(s) relacionados entre si.
UPDATE
Livros
SET
Livros.Publicacao = Autores.Nascimento
FROM
Livros
INNER JOIN
Autores ON
(Autores.AutorID = Livros.AutorID)
E por último, pode alterar diversos campos de uma só vez utilizando o UPDATE.
UPDATE
Livros
SET
Nome = ‘O Alquimista’,
Publicacao = ‘1988-01-01’,
AutorID = 75
WHERE
LivroID = 23
Está ai a atualização de 3 campos de uma só vez…