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
  descrição = '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 ];

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
  descrição = '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 as tabelas abaixo, a tabela funcionario (Tabela 2) e a tabela supervisor (Tabela 3).

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

Id_funcionario data_admissao
1 2012-05-05
2 2015-04-01
3 2015-01-01
4 2017-01-01
5 2017-02-01
6 2017-01-01
Tabela 3. Tabela supervisor

A empresa solicitou que todos os funcionários do departamento comercial, que sejam supervisores, sejam transferidos para o departamento "Supervisão Comercial". Para isso, podemos utilizar a query abaixo:

UPDATE
  funcionario F
SET
  departamento = 'Supervisão Comercial'
WHERE id IN
  (
    SELECT 
    id_funcionario 
  FROM 
    supervisor S
  WHERE
    S.id_funcionario = F.id
  AND
    F.departamento = 'Comercial'
  )

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.

Observe no resultado acima, que somente os funcionários do departamento comercial que também estavam na tabela de Supervisor tiveram seus departamentos alterados para supervisão comercial.

Confira também