SQL: UPDATE
O UPDATE permite a alteração de um ou mais dados armazenados em uma tabela.
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 |
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 |
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 |
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 |
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.
O DELETE permite que uma ou mais linhas sejam excluídas de uma tabela do banco de dados.