MÉMO - INSERT, UPDATE, DELETE : le langage de manipulation des données

136 vues

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

Lire les commentaires (0)

Articles similaires


Soyez le premier à réagir

Ne sera pas publié

Envoyé !

Derniers articles