Langage de manipulation des données (LMD)

Le langage de manipulation des données (Data Manipulation Language en anglais) est la partie du langage SQL qui permet d’effectuer des opérations sur le contenu (LIGNES) d’une ou plusieurs tables.

Il n’y a que quatre opérations possibles: l’ajout de lignes, le retrait de lignes, l’interrogation de lignes et la modification des valeurs d’une ou plusieurs colonnes. À chacune de ces opérations ne correspond qu’une seule instruction du langage SQL. Il n’y a donc que quatre instructions en SQL pour manipuler les données! (Les instructions INSERT, DELETE, UPDATE et SELECT).

Les opérations d’ajouts et de retraits s’effectuent sur des lignes entières (i.e. toutes les colonnes de la ligne). Par contre, les opérations d’interrogation ou de modification peuvent s’effectuer sur certaines colonnes seulement.

À noter que seule l’opération d’interrogation peut s’effectuer sur plusieurs tables simultanément. Toutes les autres ne s’effectuent que sur une seule table à la fois. La présente section se concentre sur les interrogations sur une seule table. Les interrogations à plusieurs tables (nommées jointures) sont traitées dans la section suivante.

1.1Ajouter des lignes dans une table (INSERT)

1.1.1 Ajouter une seule nouvelle ligne

L’instruction INSERT est utilisée pour ajouter une ligne dans une table.

INSERT INTO table [(liste des colonnes)]
VALUES (liste des valeurs);

La liste des colonnes est optionnelle, mais devient obligatoire lorsque:

  • la liste des valeurs ne respecte pas l’ordre des colonnes présentes dans la table,
    et/ou
  • on insère moins de valeurs qu’il n’existe de colonnes dans la table.

Remarque:

  • Les types de données entre les valeurs fournies et les colonnes de la table doivent être compatibles.
  • On peut remplacer une valeur manquante par le mot clé NULL.
Ajoutez un employé nommé Ivan Pacher dont le matricule est 357.
INSERT INTO chef
VALUES (357, ‘John Smith’, NULL);
ou
INSERT INTO chef (matricule, nom)
VALUES (357, ‘John Smith’);

1.1.2 Ajouter plusieurs lignes à partir d’une table existante

On peut ajouter plusieurs lignes dans une table, en une seule instruction, en remplaçant la clause VALUES par une sous-requête (voir la section appropriée).

INSERT INTO table [(liste des colonnes)]
sous-requête;

Bien entendu, cette instruction demande que les lignes qui doivent être ajoutées dans la table existent déjà dans une autre table. Votre sous- requête doit produire un résultats dont les colonnes sont compatibles avec celles de la table.

1.2 Effacer des lignes dans une table (DELETE)

L’instruction DELETE est utilisée pour effacer une ou plusieurs lignes dans une table.

Toutes les lignes qui respectent la ou les conditions sont effacées. La table peut devenir totalement vide de lignes, mais demeure existante en tant que structure de la base de données.

DELETE FROM table
[WHERE expression conditionnelle];

Comme cette instruction s’adresse à des lignes existantes dans la table, il faut être capable de préciser quelle(s) ligne(s) nous intéresse(nt). Pour ce faire, on doit rédiger une expression conditionnelle (voir la section appropriée).

Remarque:

  • Si on ne pose aucune condition, alors toutes les lignes sont effacées.
  • Si on pose une condition d’égalité sur la clé primaire, alors une seule ligne est effacée.
  • Si on pose toute autre condition, alors plusieurs lignes ou aucune ligne n’est effacée selon le résultat de la vérification de la condition pour chaque ligne rencontrée dans la table.
Effacez les pièces en inventaire qui appartiennent à la classe W67.
DELETE FROM produit
WHERE classe = ‘W67’;

1.3 Modifier des lignes dans une table (UPDATE)

L’instruction UPDATE est utilisée pour modifier une ou plusieurs valeurs existantes dans une table.

UPDATE table
SET colonne = { valeur | sous-requête }
[WHERE expression conditionnelle];

Attention, le symbole « = « n’est pas ici un symbole d’égalité, mais représente plutôt une assignation. Il est donc important que la colonne soit à gauche et la valeur assignée à droite. Il est aussi possible d’inclure la colonne dans l’expression de la valeur, ce qui signifie que l’on utilise l’ancienne valeur de la colonne pour la modifier.

Majorez de 10% le coût du produit 384R.
UPDATE produit
SET cout = cout * 1.1
WHERE code_produit = ‘384R’;

Si plusieurs colonnes doivent être modifiées, alors la clause SET contient une liste des modifications, séparées par des virgules. À noter qu’il y a toujours qu’une seule clause SET.

Majorez de 10% le coût du produit 384R, et augmentez sa quantité de 2.
UPDATE produit
SET cout = cout * 1.1 , quantite = quantite + 2
WHERE code_produit = ‘384R’;

Si une sous-requête est utilisée pour fournir la valeur à assigner, il faut s’assurer que la sous-requête ne produit qu’une seule colonne et une seule ligne. Cette restriction rend parfois difficile l’utilisation d’une sous-requête.

 

 

Print Friendly, PDF & Email

Laisser un commentaire