Le langage SQL-DML

Le langage SQL permet de modifier une base de données en y modifiant ou en y supprimant des enregistrements.

Suppression de données

La commande DELETE permet de supprimer les lignes d'une table individuellement ou par groupe. Supposons par exemple que notre grossiste en livres ne traite plus avec les librairies du canton de Fribourg. Afin de supprimer toutes les lignes associées à ce canton, il lui suffira alors d'appliquer la requête suivante:

sql105.jpg

Requête supprimant toutes les librairies du canton de Fribourg dans la table Client

Cette requête est irréversible et c'est pourquoi le SGBD avertit l'utilisateur avant de l'exécuter afin de s'assurer de sa volonté de supprimer des données. Il est dès lors nécessaire d'utiliser cette requête avec précaution et ceci d'autant plus lorsque la suppression d'une ligne est susceptible d'avoir des répercutions sur d'autres tables auxquelles elle est liée. Par exemple, en supprimant un client de la table Client, toutes les commandes qu'il possède en suspens dans la table Commande seront effacées si la contrainte d'intégrité référentielle a préalablement été définie avec suppression en cascade. L'effacement de ces commandes engendrerait également la suppression des lignes correspondantes dans la table LigneCommande par effet domino. Cette succession de suppressions en cascades permet de conserver la base de données dans un état stable respectant les contraintes d'intégrité auxquelles elle est soumise et ceci même après avoir supprimé des lignes.

Mise à jour de données

La commande UPDATE permet de modifier les lignes d'une table. Supposons par exemple qu'un prix unitaire incorrect de 100 francs a été introduit pour l'ouvrage Dieux du stade dont le numéro de référence est 200 dans la table Produit. Pour corriger ce prix, il suffit d'appliquer la requête suivante:

sql107.jpg

Requête modifiant le prix du livre Dieux du stade dans la table Produit

Toutes les lignes de la table Produit vérifiant la condition de la clause WHERE seront modifiées suite à cette requête.

Notons que les données d'une colonne peuvent être modifiées par les résultats d'une expression arithmétique. Imaginons par exemple que tous les produits borchés subissent en fin d'année une augmentation de prix de 10%. Pour mettre à jour la table Produit, il suffit alors d'appliquer la requête suivante:

sql108.jpg

Requête modifiant le prix des livres brochés de la table Produit

Les illustrations suivantes présentent la table Produit avant et après la mise à jour. Nous constatons que seules les enregistrements dont le type de reliure est broché ont été modifiés:

sql109.jpg

Table Produit avant la mise à jour

sql110.jpg

Table Produit après la mise à jour

Dans la commande UPDATE, la clause WHERE peut contenir une sous-requête à condition que celle-ci ne fasse aucune référence à la table qui sera mise à jour.