UPDATE – Modifier des données
Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 5 minutes
La commande UPDATE permet d’effectuer des modifications sur des lignes existantes. Très souvent, cette commande est utilisée avec WHERE pour spécifier sur quelles lignes doivent porter la ou les modifications.
Attention : Sans clause
WHERE, la commandeUPDATEmodifie toutes les lignes de la table. Utilisez-la avec précaution !
Syntaxe
Section titled “Syntaxe”La syntaxe basique d’une requête utilisant UPDATE est la suivante :
UPDATE tableSET nom_colonne_1 = 'nouvelle valeur'WHERE condition;Cette syntaxe permet d’attribuer une nouvelle valeur à la colonne nom_colonne_1 pour les lignes qui respectent la condition stipulée avec WHERE.
Pour spécifier en une seule fois plusieurs modifications, il faut séparer les attributions de valeur par des virgules :
UPDATE tableSET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2', colonne_3 = 'valeur 3'WHERE condition;Exemple concret
Section titled “Exemple concret”Imaginons une table « client » qui présente les coordonnées de clients.
Table « client » :
| id | nom | rue | ville | code_postal | pays |
|---|---|---|---|---|---|
| 1 | Chantal | 12 Avenue du Petit Trianon | Puteaux | 92800 | France |
| 2 | Pierre | 18 Rue de l’Allier | Ponthion | 51300 | France |
| 3 | Romain | 3 Chemin du Chiron | Trévérien | 35190 | France |
Pour modifier l’adresse du client Pierre, il est possible d’utiliser la requête suivante :
UPDATE clientSET rue = '49 Rue Ameline', ville = 'Saint-Eustache-la-Forêt', code_postal = '76210'WHERE id = 2;Résultat :
| id | nom | rue | ville | code_postal | pays |
|---|---|---|---|---|---|
| 1 | Chantal | 12 Avenue du Petit Trianon | Puteaux | 92800 | France |
| 2 | Pierre | 49 Rue Ameline | Saint-Eustache-la-Forêt | 76210 | France |
| 3 | Romain | 3 Chemin du Chiron | Trévérien | 35190 | France |
Exemples supplémentaires
Section titled “Exemples supplémentaires”Mise à jour simple
Section titled “Mise à jour simple”Modifier le code postal de tous les clients habitant à Paris :
UPDATE clientSET code_postal = '75000'WHERE ville = 'Paris';Mise à jour avec calcul
Section titled “Mise à jour avec calcul”Augmenter le prix de tous les produits de 10% :
UPDATE produitSET prix = prix * 1.10;Attention : Cette requête modifie tous les produits, car il n’y a pas de clause
WHERE.
Mise à jour conditionnelle avec CASE
Section titled “Mise à jour conditionnelle avec CASE”Utiliser CASE pour mettre à jour des valeurs selon une condition (comme vu au chapitre 15) :
UPDATE produitSET prix = CASE WHEN categorie = 'informatique' THEN prix * 1.10 WHEN categorie = 'fourniture' THEN prix * 1.05 ELSE prixEND;Mise à jour avec sous-requête
Section titled “Mise à jour avec sous-requête”Mettre à jour le total des achats des clients en fonction des commandes passées :
UPDATE client cSET total_achats = ( SELECT SUM(prix_total) FROM commande cmd WHERE cmd.client_id = c.id);Mise à jour de plusieurs tables (MySQL, PostgreSQL)
Section titled “Mise à jour de plusieurs tables (MySQL, PostgreSQL)”Certains SGBD permettent de mettre à jour plusieurs tables en une seule requête avec une jointure.
MySQL :
UPDATE client cJOIN commande cmd ON c.id = cmd.client_idSET c.total_achats = c.total_achats + cmd.prix_totalWHERE cmd.date_achat > '2024-01-01';PostgreSQL :
UPDATE clientSET total_achats = total_achats + cmd.prix_totalFROM commande cmdWHERE client.id = cmd.client_idAND cmd.date_achat > '2024-01-01';Bonnes pratiques
Section titled “Bonnes pratiques”1. Toujours utiliser WHERE (sauf cas exceptionnel)
Section titled “1. Toujours utiliser WHERE (sauf cas exceptionnel)”-- ❌ Dangereux : modifie TOUTES les lignesUPDATE client SET pays = 'France';
-- ✅ Sécurisé : ne modifie qu'un client spécifiqueUPDATE client SET pays = 'France' WHERE id = 42;2. Tester avec SELECT avant UPDATE
Section titled “2. Tester avec SELECT avant UPDATE”Avant d’exécuter une requête UPDATE, il est prudent de tester la condition avec un SELECT :
-- Vérifier quelles lignes vont être modifiéesSELECT * FROM client WHERE ville = 'Paris';
-- Puis exécuter la mise à jourUPDATE client SET code_postal = '75000' WHERE ville = 'Paris';3. Faire une sauvegarde
Section titled “3. Faire une sauvegarde”Avant une mise à jour massive, il est recommandé de faire une sauvegarde :
-- Créer une copie de la tableCREATE TABLE client_backup AS SELECT * FROM client;
-- Ou exporter les données avant la mise à jour4. Utiliser les transactions
Section titled “4. Utiliser les transactions”Pour les opérations critiques, utilisez les transactions pour pouvoir annuler en cas d’erreur :
START TRANSACTION;
UPDATE client SET code_postal = '75000' WHERE ville = 'Paris';
-- Vérifier le résultatSELECT * FROM client WHERE ville = 'Paris';
-- Valider si tout est correctCOMMIT;
-- Ou annuler si problème-- ROLLBACK;5. Utiliser RETURNING (PostgreSQL) pour voir les modifications
Section titled “5. Utiliser RETURNING (PostgreSQL) pour voir les modifications”UPDATE clientSET pays = 'France'WHERE id = 42RETURNING *;Erreurs courantes
Section titled “Erreurs courantes”| Erreur | Cause | Solution |
|---|---|---|
Oubli de WHERE |
Toutes les lignes sont modifiées | Toujours spécifier WHERE sauf exception |
| Violation de contrainte d’unicité | Mise à jour vers une valeur déjà existante | Vérifier l’unicité avant la mise à jour |
Violation de contrainte NOT NULL |
Mise à jour vers NULL sur colonne non nullable |
Vérifier les contraintes de la colonne |
| Erreur de syntaxe | Oubli de SET ou WHERE |
Vérifier la syntaxe de la requête |
Prochain chapitre
Section titled “Prochain chapitre”Vous savez désormais comment modifier des données avec UPDATE. Mais que faire pour supprimer des données ?
👉 Chapitre 23 : DELETE – Supprimer des lignes
Bonne continuation !
Junior TSAFACK – 08/08/2026