MÉMO - INSERT, UPDATE, DELETE : le langage de manipulation des données
Interroger une base avec SELECT ne suffit pas toujours : il faut aussi savoir y créer un nouvel enregistrement (un nouveau client), corriger une donnée existante (une adresse erronée), ou en supprimer une devenue obsolète.
Ces trois opérations forment, avec SELECT, le langage de manipulation des données (LMD) , mais à la différence du SELECT, elles modifient réellement le contenu de la base, avec un risque d'erreur irréversible si la portée de la requête n'est pas maîtrisée.
Poser la question directement : comment écrire ces trois instructions sans risquer de modifier ou supprimer plus de données que prévu ?
Réponse rapide
| Instruction | Rôle |
| INSERT INTO | crée un nouvel enregistrement (une nouvelle ligne) dans une table |
| UPDATE ... SET | modifie la valeur d'une ou plusieurs colonnes sur les lignes existantes qui remplissent une condition |
| DELETE FROM | supprime les lignes existantes qui remplissent une condition |
Syntaxe de chacune
INSERT INTO — créer un enregistrement :
|
INSERT INTO CLIENT (codeclient, nomclient, villeclient, codecat, numcom) |
|
VALUES ('4110345', 'VALERY', 'Rouen', 'P', '01'); |
La liste des colonnes (entre parenthèses après le nom de la table) est facultative si l'on fournit une valeur pour toutes les colonnes, dans leur ordre exact — mais elle est fortement recommandée : elle rend la requête lisible et indépendante de l'ordre des colonnes dans la table.
UPDATE ... SET — modifier des enregistrements existants :
|
UPDATE CLIENT |
|
SET villeclient = 'Lyon' |
|
WHERE codeclient = '4110345'; |
DELETE FROM — supprimer des enregistrements :
|
DELETE FROM CLIENT |
|
WHERE codeclient = '4110345'; |
Erreurs fréquentes et bonnes pratiques
| Erreur | Bonne pratique |
| Exécuter un UPDATE ou un DELETE sans clause WHERE | sans WHERE, l'instruction s'applique à TOUTES les lignes de la table — toujours relire la portée exacte de la condition avant de valider |
| Omettre SET dans un UPDATE | sans SET, la requête est syntaxiquement incorrecte : SET introduit obligatoirement la ou les colonnes à modifier et leur nouvelle valeur |
| Fournir des valeurs dans un ordre différent de la liste de colonnes de l'INSERT | chaque valeur doit correspondre, par position, à la colonne annoncée au même rang dans la liste |
| Essayer d'insérer une clé primaire déjà existante | rejet de la requête par le SGBD (violation de la contrainte d'unicité) : vérifier au préalable que la clé n'est pas déjà utilisée |
| Essayer d'insérer une clé étrangère qui ne correspond à aucune clé primaire existante dans la table référencée | violation de l'intégrité référentielle : la ligne référencée (ex. le commercial numcom) doit exister avant de pouvoir être utilisée comme clé étrangère |
En résumé
| Point clé | Réponse |
| Instruction pour créer un enregistrement | INSERT INTO ... VALUES ... |
| Instruction pour modifier un enregistrement existant | UPDATE ... SET ... WHERE ... |
| Instruction pour supprimer un enregistrement | DELETE FROM ... WHERE ... |
| Risque commun à UPDATE et DELETE | une clause WHERE absente ou trop large modifie/supprime des données au-delà de ce qui était prévu, sans confirmation ni possibilité d'annulation automatique |
Dans la bibliothèque Rodco
Essentiel
- Les requêtes SQL
Mémo
- Jointures SQL : implicite (WHERE) ou explicite (JOIN)
- GROUP BY et fonctions d'agrégation SQL
- Les sous-requêtes SQL



