Pour poursuivre notre série d’articles sur le langage SQL, nous allons cette fois-ci aborder la clause SQL DELETE. SQL permet d’interagir avec un système de gestion de bases de données. Mais outre le fait qu’il sert à insérer et mettre à jour des informations, il sert également à supprimer celles qui ne sont plus utiles.
Cette clause est utile pour plusieurs raisons, par exemple pour la purge d’une base de données, pour le nettoyage d’une base après un scraping de données ou encore en cas de mauvaise insertion. Dans cet article, nous allons découvrir les différentes méthodes d’utilisation de la commande DELETE sous forme de tutoriel exhaustif.
SQL DELETE : définition
DELETE, qui veut dire supprimer en anglais, est une commande SQL qui permet de supprimer des données dans la table d’une base de données. Grâce à la clause WHERE, vous pouvez choisir le(s) critère(s) des lignes à supprimer.
La syntaxe de DELETE
La syntaxe basique pour supprimer des lignes dans une table est la suivante :
DELETE FROM `table`
WHERE condition
Faites attention ! Si vous ne spécifiez pas une condition avec la clause WHERE, toutes les lignes seront supprimées et la table sera alors vide.
Illustration de la commande DELETE
Passons directement à la pratique de SQL DELETE. Pour illustrer cette commande, considérons la table utilisateur suivante :
Dans cet enregistrement, nous allons supprimer la ligne numéro 3 en utilisant la commande suivante :
DELETE FROM `utilisateur`
WHERE `id` = 3
Une fois cette commande exécutée, nous pouvons vérifier en affichant la table avec la commande SELECT.
Comme on peut le constater, la ligne est belle et bien supprimée.
Comment supprimer plusieurs lignes ?
Comme nous l’avons évoqué brièvement au tout début de l’article, on peut supprimer plusieurs lignes en une seule commande. Pour voir cela, on va supprimer les deux dernières lignes grâce aux codes suivant :
DELETE FROM `utilisateur`
WHERE `id` > 2
Si l’on affiche la table, on peut constater qu’il ne reste que deux lignes à notre table.
Comment supprimer toutes les données avec SQL DELETE ?
Comme dit précédemment, pour supprimer toutes les données, il faut juste exclure la condition WHERE, comme suit :
DELETE FROM `utilisateur`
Supprimer toutes les données avec la commande TRUNCATE ?
Il n’y a pas une grande différence entre TRUNCATE et DELETE. Mais il faut savoir qu’en cas d’existence de l’auto-incrément, la commande TRUNCATE va le réinitialiser tandis que DELETE ne le fait pas.
En utilisant la commande de la manière suivante, vous allez également supprimer toutes les lignes de la table :
TRUNCATE TABLE `utilisateur`
Suppression des lignes liées dans plusieurs tables
Effacer une ligne qui est liée à une ou plusieurs autres tables est plus compliqué.
Considérons par exemple les tables suivantes :
Lorsque vous voulez supprimer une ligne dans la table employees, il faut absolument la supprimer aussi dans la table employeeterritories. Pour réussir cela, il faut exécuter deux DELETE comme suit :
DELETE FROM employees
WHERE employeeID = 3;
DELETE FROM employeeterritories
WHERE employeeID = 3
Si vous avez créé une contrainte de clé étrangère, la première instruction DELETE permet de supprimer toutes les autres lignes liées.
Supprimer plusieurs lignes grâce aux opérateurs BETWEEN et AND
Pour supprimer des lignes dans une plage de valeur, vous pouvez utiliser BETWEEN avec AND. Pour bien illustrer cela, considérons la table student suivant :
Ici, nous allons supprimer les lignes comprises entre 5 et 11 avec la commande suivante :
DELETE FROM students_data WHERE student_id BETWEEN 5 AND 11;
Et voilà le résultat :
Supprimer plusieurs lignes grâce à l’opérateur IN
Vous pouvez spécifier les lignes à supprimer en donnant par exemple la valeur d’une colonne. Dans notre cas, nous allons supprimer les lignes 1,12 et 14 à l’aide de cette commande :
DELETE FROM students_data
WHERE student_name IN ("Gustav","Jacob","Rohit");
Voilà, nous arrivons à la fin de ce mini tutoriel. Dans cet article vous avez découvert les divers modes d’utilisation de la commande DELETE pour supprimer des données dans une table. Il faut retenir aussi que pour supprimer une ligne liée à plusieurs tables il faut appliquer au moins deux fois la commande DELETE si l’auto-incrément n’est pas activé.
Vous pouvez maintenant utiliser toutes les capacités de cette clause lors de vos prochaines requêtes SQL. Si vous souhaitez aller plus loin, vous pouvez visiter notre blog et voir d’autres syntaxes SQL. Vous pouvez également en apprendre davantage sur le Big Data en téléchargeant gratuitement cette formation sur Spark avec Scala.