Na lição anterior, aprendemos a adicionar novas linhas com INSERT INTO. Agora vamos ver como modificar dados já existentes com a instrução UPDATE. Esta é uma das principais operações DML que mantém seu banco de dados atualizado e preciso.
UPDATE nome_da_tabela
SET coluna1 = valor1, coluna2 = valor2, ...
WHERE condição;
UPDATE nome_da_tabela — especifica a tabela na qual você deseja alterar dados.SET coluna = valor — atribui novos valores a uma ou mais colunas.WHERE condição — determina quais linhas serão atualizadas.WHERE: Sem a cláusula WHERE, a instrução UPDATE modificará todas as linhas da tabela. Este é um dos erros mais comuns e perigosos.').UPDATE dentro de uma transação para poder reverter as alterações em caso de erro.Vamos alterar o endereço de e-mail de um cliente específico na tabela customer.
UPDATE customer
SET email = 'new.email@example.com'
WHERE customer_id = 1;
Nota: A condição WHERE customer_id = 1 garante que apenas um registro específico seja alterado.
Você pode listar várias colunas na cláusula SET, separadas por vírgulas.
UPDATE customer
SET first_name = 'ALICE',
last_name = 'COOPER',
email = 'alice.cooper@example.com'
WHERE customer_id = 42;
A instrução UPDATE permite calcular um novo valor com base no atual. Por exemplo, vamos aumentar a taxa de aluguel de todos os filmes da categoria "Comedy" em 10%:
UPDATE film
SET rental_rate = rental_rate * 1.10
WHERE film_id IN (
SELECT f.film_id
FROM film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN category c ON fc.category_id = c.category_id
WHERE c.name = 'Comedy'
);
Resultado: A taxa de aluguel de todos os filmes "Comedy" aumentará 10%.
Vamos marcar todos os clientes inativos que não realizaram nenhum aluguel após uma determinada data:
UPDATE customer
SET active = 0
WHERE customer_id NOT IN (
SELECT DISTINCT customer_id
FROM rental
WHERE rental_date >= '2005-08-01'
);
Se uma coluna permite NULL, você pode limpá-la explicitamente:
UPDATE film
SET original_language_id = NULL
WHERE film_id = 10;
Uma boa prática é executar primeiro um SELECT com a mesma condição WHERE, para confirmar que as linhas certas serão afetadas:
-- Primeiro, verifique o que o SELECT retorna
SELECT customer_id, first_name, last_name, email
FROM customer
WHERE customer_id = 1;
-- Somente após verificar, execute o UPDATE
UPDATE customer
SET email = 'new.email@example.com'
WHERE customer_id = 1;
Principais Conclusões desta Lição:
UPDATE modifica linhas existentes em uma tabela.WHERE, todas as linhas da tabela serão atualizadas — sempre verifique sua presença.SET, separadas por vírgulas.price = price * 1.1).UPDATE, é recomendável executar um SELECT com a mesma condição para verificar as linhas afetadas.Na próxima lição, exploraremos a instrução DELETE — como remover linhas de uma tabela de forma segura e controlada.