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 :

table_utilisateur

Dans cet enregistrement, nous allons supprimer la ligne numéro 3 en utilisant la commande suivante :

DELETE FROM `utilisateur`
WHERE `id` = 3 
sql_delete_utilisateur

Une fois cette commande exécutée, nous pouvons vérifier en affichant la table avec la commande SELECT.

select_utilisateur

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.

delete_lignes

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 :

Source : www.zentut.com

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 :

sql_delete_between

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;
delete_between

Et voilà le résultat :

select_delete_between

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");
sql_delete_in

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.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>