Sql:UPDATE

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Commande SQL standard
Catégorie DML (Data Manipulation Language)
Rôle Modifier la valeur de colonnes sur des lignes existantes
Voir aussi Sql · Sql:SELECT · Sql:DELETE

UPDATE est la commande SQL de modification de lignes déjà présentes dans une table. À la différence de Sql:INSERT (ajout) ou Sql:DELETE (suppression), UPDATE change la valeur d'une ou plusieurs colonnes sur les lignes sélectionnées par la clause WHERE.

Syntaxe

UPDATE nom_table
SET colonne1 = valeur1 [, colonne2 = valeur2, ...]
[WHERE condition];

Sans clause WHERE, la commande met à jour toutes les lignes de la table — l'oubli du WHERE est l'une des erreurs les plus fréquentes (et les plus dommageables) en SQL. Sur un environnement de production, il est recommandé de valider la sélection avec un Sql:SELECT utilisant la même condition avant d'exécuter l'UPDATE.

Exemples

-- Modifier une colonne sur une ligne précise
UPDATE utilisateurs SET email = 'nouvel.email@example.com' WHERE id = 42;

-- Modifier plusieurs colonnes en une seule commande
UPDATE utilisateurs
SET nom = 'Nouveau Nom', actif = 1
WHERE email = 'ancien.email@example.com';

-- Vérifier d'abord la sélection avec un SELECT équivalent
SELECT * FROM utilisateurs WHERE actif = 0;
-- puis, une fois la sélection validée :
UPDATE utilisateurs SET actif = 0 WHERE derniere_connexion < '2020-01-01';

-- Mise à jour à partir d'une jointure (syntaxe MySQL)
UPDATE commandes c
JOIN utilisateurs u ON u.id = c.utilisateur_id
SET c.statut = 'archivee'
WHERE u.actif = 0;

Variantes par moteur

  • MySQL/MariaDB : UPDATE table1 JOIN table2 ON ... SET ..., jointure
 directement dans la clause UPDATE.
  • PostgreSQL : pas de JOIN dans UPDATE — s'appuie sur
 UPDATE ... SET ... FROM autre_table WHERE ....
  • Oracle : UPDATE ... SET (col1, col2) = (SELECT ...) pour une mise à jour
 à partir d'une sous-requête multi-colonnes ; MERGE INTO pour un upsert (voir
 Sql:INSERT).

Voir aussi