O UPDATE permite a alteração de um ou mais dados armazenados em uma tabela.

Visão geral

Considere a tabela produtos presente na Tabela 1, onde precisamos modificar o nome do produto com id=2, por ter sido inserido com erros de ortografia.


id descricao preco categoria
1 Papel oficio (c/100 folhas) 4.50 2
2 Laapis preto (unid) 0.50 1
3 Xerox (1 folha PB) 0.25 4
Tabela 1. Tabela produtos

Para resolver esta falha de escrita podemos executar o comando SQL a seguir:

UPDATE
  produtos
SET
  descricao = 'Lápis preto (unid)'
WHERE
  id = 2

Na linha 2 especificamos a tabela que sofrerá alterações. Em seguida, na linha 4 especificamos os valores que sofrerão as mudanças, ou seja, { Lápis preto (unid) } e definimos ainda um novo valor para o produto. Em seguida utilizamos a condição WHERE para especificar o item que será modificado através do filtro {id = 2}.

Sintaxe

UPDATE [ tabela ]
SET
  [ coluna_1 ] = [ novo_valor_1 ],
  [ coluna_2 ] = [ novo_valor_2 ]
WHERE
  [ condicao-de-busca ]
ORDER [ ordem ]
LIMIT [ limite ];

Não se preocupe com a cláusula ORDER neste momento, ela será ensinada mais a frente. Ela foi inserida aqui para que você conheça a sintaxe do comando UPDATE.

Na prática

Exemplo 1

É importante lembrar que a cláusula WHERE serve para filtrar um item em uma tabela, criando condições para que um item específico que está sendo procurado seja encontrado pelo banco de dados. Ele também permite o uso de operadores como OR, AND e NOT durante a filtragem de resultados, como pode ser visto no exemplo abaixo:

UPDATE
  produtos
SET
  descricao = 'Resma de ofício com 500 folhas',
  preco = 18.50
WHERE
  id = 1 OR preco = 17.50

No exemplo acima a condição para a alteração dos dados é o id do produto ser igual a 1. Caso não exista um item com este id, ele buscará os itens com preço igual a 17.50.

O WHERE, com os operadores condicionais, permite maior flexibilidade ao buscar um item específico no banco de dados.

Exemplo 2

Para este exemplo, considere a tabela funcionario (Tabela 2).

ID Nome Departamento
1 Pedro Henrique Compras
2 Lucas da Silva Administrativo
3 Luana Gabriela Comercial
4 Renato Lazuna Administrativo
5 Rafaela Barrosa Administrativo
6 Arline da Costa Comercial
7 Giseli Pascoa Comercial
8 Renan Pereira Compras
Tabela 2. Tabela funcionario

A empresa solicitou que os funcionários "Luana Gabriela" (id = 3) e "Arline da Costa" (id = 6) sejam transferidas do setor "Comercial" para o setor "Supervisão Comercial". Para isso, podemos utilizar a query abaixo:


UPDATE funcionario 
SET departamento = 'Supervisão Comercial'
WHERE id IN (3, 6)

No comando acima, utilizamos a cláusula WHERE para definir que seja atualizado apenas os registros onde o id esteja dentro (IN) dos citados entre parênteses. Neste caso entre parênteses estão os id 3 e 6.

Observe o resultado da query abaixo, na Tabela 4.

ID Nome Departamento
1 Pedro Henrique Compras
2 Lucas da Silva Administrativo
3 Luana Gabriela Supervisão Comercial
4 Renato Lazuna Administrativo
5 Rafaela Barrosa Administrativo
6 Arline da Costa Supervisão Comercial
7 Giseli Pascoa Comercial
8 Renan Pereira Compras
Tabela 4. Resultado da query de atualização.