Dans la leçon précédente, nous avons appris à ajouter de nouvelles lignes avec INSERT INTO. Voyons maintenant comment modifier des données déjà existantes grâce à l'instruction UPDATE. Il s'agit de l'une des opérations DML essentielles qui permet de maintenir votre base de données à jour.
UPDATE nom_de_table
SET colonne1 = valeur1, colonne2 = valeur2, ...
WHERE condition;
UPDATE nom_de_table — indique la table dans laquelle vous souhaitez modifier des données.SET colonne = valeur — définit les nouvelles valeurs pour une ou plusieurs colonnes.WHERE condition — détermine quelles lignes seront mises à jour.WHERE : Sans clause WHERE, l'instruction UPDATE modifiera toutes les lignes de la table. Il s'agit de l'une des erreurs les plus courantes et les plus dangereuses.').UPDATE dans une transaction afin de pouvoir annuler les modifications en cas d'erreur.Modifions l'adresse e-mail d'un client spécifique dans la table customer.
UPDATE customer
SET email = 'new.email@example.com'
WHERE customer_id = 1;
Remarque : La condition WHERE customer_id = 1 garantit que seul un enregistrement précis sera modifié.
Vous pouvez lister plusieurs colonnes dans la clause SET, séparées par des virgules.
UPDATE customer
SET first_name = 'ALICE',
last_name = 'COOPER',
email = 'alice.cooper@example.com'
WHERE customer_id = 42;
L'instruction UPDATE permet de calculer une nouvelle valeur à partir de la valeur actuelle. Par exemple, augmentons le tarif de location de tous les films de la catégorie « Comedy » de 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'
);
Résultat : Le tarif de location de tous les films « Comedy » augmentera de 10 %.
Marquons tous les clients inactifs qui n'ont pas effectué de location après une certaine date :
UPDATE customer
SET active = 0
WHERE customer_id NOT IN (
SELECT DISTINCT customer_id
FROM rental
WHERE rental_date >= '2005-08-01'
);
Si une colonne autorise NULL, vous pouvez explicitement l'effacer :
UPDATE film
SET original_language_id = NULL
WHERE film_id = 10;
Une bonne pratique consiste à exécuter d'abord un SELECT avec la même condition WHERE, afin de s'assurer que les bonnes lignes seront affectées :
-- D'abord, vérifier ce que retourne SELECT
SELECT customer_id, first_name, last_name, email
FROM customer
WHERE customer_id = 1;
-- Seulement après vérification, exécuter l'UPDATE
UPDATE customer
SET email = 'new.email@example.com'
WHERE customer_id = 1;
Points clés de cette leçon :
UPDATE modifie les lignes existantes dans une table.WHERE, toutes les lignes de la table seront mises à jour — vérifiez toujours sa présence.SET, séparées par des virgules.price = price * 1.1).UPDATE, il est recommandé d'effectuer un SELECT avec la même condition pour vérifier les lignes affectées.Dans la prochaine leçon, nous étudierons l'instruction DELETE — comment supprimer des lignes d'une table de façon sûre et contrôlée.