UPDATE en SQL Oracle : modifier des données facilement

Apprenez à utiliser la commande UPDATE en SQL Oracle : syntaxe, exemples pratiques, erreurs courantes et bonnes pratiques pour modifier vos données.

Illustration du tutoriel SQL Oracle : UPDATE en SQL Oracle : modifier des données facilement

La commande UPDATE en SQL Oracle : modifier des données efficacement

La commande UPDATE en SQL Oracle est l’une des instructions DML (Data Manipulation Language) les plus utilisées en entreprise. Elle permet de modifier une ou plusieurs lignes existantes dans une table de base de données. Que vous ayez besoin de corriger une valeur, de mettre à jour un statut ou de recalculer un champ, maîtriser l’UPDATE SQL Oracle est indispensable pour tout développeur ou administrateur de bases de données.

Publicité

Définition et utilisation de la commande UPDATE

La commande UPDATE appartient au sous-langage DML de SQL. Elle est utilisée pour modifier les valeurs de colonnes existantes dans une ou plusieurs lignes d’une table, sans créer ni supprimer d’enregistrements.

En entreprise, les cas d’usage sont nombreux et variés :

  • Correction de données : rectifier une adresse email mal saisie ou un numéro de téléphone erroné.
  • Mise à jour de statuts : passer une commande de « en cours » à « livrée » dans un système de gestion commercial.
  • Recalcul de valeurs : appliquer une augmentation salariale à l’ensemble des employés d’un département.
  • Synchronisation de données : mettre à jour une table cible à partir d’une table source dans un processus ETL.

Il est important de noter qu’en Oracle, toute opération UPDATE doit être validée explicitement via un COMMIT pour être définitivement enregistrée, ou annulée via un ROLLBACK. Oracle ne dispose pas de mode autocommit actif par défaut dans SQL*Plus ou SQL Developer.

Syntaxe complète de l’UPDATE SQL Oracle

La syntaxe de base de la commande UPDATE en Oracle est la suivante :

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

Explication des paramètres essentiels

ParamètreDescriptionObligatoire
nom_tableNom de la table à mettre à jourOui
SETClause définissant les colonnes à modifier et leurs nouvelles valeursOui
colonne = valeurPaire colonne / nouvelle valeur. Plusieurs paires séparées par des virgulesOui
WHEREFiltre les lignes à modifier. Sans cette clause, toutes les lignes sont mises à jour.Non (mais recommandé)

La valeur assignée dans le SET peut être :

  • Une valeur littérale : SET statut = 'ACTIF'
  • Une expression arithmétique : SET salaire = salaire * 1.05
  • Une sous-requête : SET salaire = (SELECT avg_salaire FROM grilles WHERE grade = 3)
  • La valeur NULL : SET commentaire = NULL

Exemples pratiques de UPDATE en SQL Oracle

Exemple 1 : Augmentation salariale ciblée dans un contexte RH

Contexte : dans une entreprise, le département des Ressources Humaines souhaite appliquer une augmentation de 8 % à tous les employés du département « INFORMATIQUE » dont le salaire est inférieur à 4 000 €.

-- Mise à jour des salaires des employés du département INFORMATIQUE
-- avec un salaire inférieur à 4000
UPDATE employes
SET salaire = salaire * 1.08,
    date_modification = SYSDATE
WHERE departement = 'INFORMATIQUE'
  AND salaire < 4000;

-- Validation définitive des modifications
COMMIT;

Explications :

  • salaire * 1.08 applique une augmentation de 8 % sur la valeur actuelle du salaire.
  • SYSDATE est une fonction Oracle qui retourne la date et l’heure système actuelles, très utile pour tracer les modifications.
  • Le WHERE double garantit que seuls les enregistrements ciblés sont modifiés.
  • Le COMMIT finalise la transaction.

Exemple 2 : Mise à jour avec sous-requête dans un contexte commercial

Contexte : une équipe commerciale souhaite mettre à jour le champ categorie_client de la table clients en se basant sur le total des commandes calculé dans la table commandes.

-- Mise à jour de la catégorie des clients
-- en fonction de leur chiffre d'affaires total
UPDATE clients c
SET categorie_client = (
    SELECT
        CASE
            WHEN SUM(montant) >= 10000 THEN 'PREMIUM'
            WHEN SUM(montant) >= 5000  THEN 'STANDARD'
            ELSE 'BASIQUE'
        END
    FROM commandes co
    WHERE co.id_client = c.id_client
)
WHERE EXISTS (
    SELECT 1
    FROM commandes co
    WHERE co.id_client = c.id_client
);

-- Validation des changements
COMMIT;

Explications :

  • La sous-requête corrélée dans le SET calcule dynamiquement la catégorie en fonction des commandes liées à chaque client.
  • La clause CASE permet d’attribuer une valeur conditionnelle sans code procédural.
  • Le WHERE EXISTS garantit que seuls les clients ayant au moins une commande sont mis à jour, évitant d’écraser inutilement des lignes non concernées.
  • L’alias c sur la table principale permet de lier la sous-requête à la ligne en cours de traitement (corrélation).
Publicité

Erreurs courantes avec UPDATE en SQL Oracle

Erreur : oublier la clause WHERE et mettre à jour toutes les lignes

Il s’agit de l’erreur la plus fréquente — et potentiellement la plus catastrophique — lors de l’utilisation de UPDATE.

Exemple erroné :

-- DANGER : aucune clause WHERE, tous les statuts seront écrasés !
UPDATE commandes
SET statut = 'ANNULEE';

Cette requête met à jour toutes les lignes de la table commandes, quelle que soit leur valeur actuelle.

Solution :

-- Correct : seules les commandes du jour en attente sont annulées
UPDATE commandes
SET statut = 'ANNULEE'
WHERE statut = 'EN_ATTENTE'
  AND TRUNC(date_commande) = TRUNC(SYSDATE);

COMMIT;

Bonne pratique de prévention : avant d’exécuter un UPDATE, effectuez d’abord un SELECT avec la même clause WHERE pour vérifier le nombre de lignes qui seront impactées. En Oracle, vous pouvez également utiliser SAVEPOINT avant l’opération pour pouvoir effectuer un ROLLBACK TO SAVEPOINT en cas d’erreur.

Résumé

Point cléDétail
CatégorieDML (Data Manipulation Language)
RôleModifier des valeurs dans des lignes existantes
Clause obligatoireSET
Clause optionnelle mais critiqueWHERE — sans elle, toutes les lignes sont modifiées
ValidationCOMMIT requis en Oracle pour persister les changements
AnnulationROLLBACK ou ROLLBACK TO SAVEPOINT
Valeur spéciale OracleSYSDATE, NULL, sous-requêtes corrélées
Piège principalOubli de la clause WHERE

2 bonnes pratiques Oracle à retenir

  1. Toujours tester avec un SELECT avant d’exécuter un UPDATE. Remplacez temporairement votre UPDATE ... SET ... par un SELECT * avec la même clause WHERE pour valider le périmètre des lignes impactées avant de procéder à la modification réelle.
  2. Utiliser les SAVEPOINT pour sécuriser les transactions complexes. Dans les scripts PL/SQL ou les lots de plusieurs UPDATE, définissez des points de sauvegarde intermédiaires avec SAVEPOINT nom_point. En cas d’erreur sur l’une des étapes, vous pouvez revenir à un état stable sans perdre l’ensemble du travail effectué.

Aller plus loin

Vous maîtrisez maintenant la commande UPDATE en SQL Oracle. Pour approfondir vos compétences en manipulation de données, découvrez ces sujets complémentaires :

Sur le même thème

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Publicité