Dans la leçon précédente, nous avons appris à modifier des enregistrements avec UPDATE. Voyons maintenant comment supprimer des lignes inutiles ou obsolètes grâce à l'instruction DELETE. C'est une commande DML importante qu'il faut utiliser avec une attention particulière, car les données supprimées ne peuvent pas toujours être récupérées facilement.
DELETE FROM nom_de_table
WHERE condition;
DELETE FROM nom_de_table — indique la table dont les lignes doivent être supprimées.WHERE condition — détermine quelles lignes seront supprimées.Si WHERE est omis, toutes les lignes de la table seront supprimées.
WHERE : une erreur dans la condition peut supprimer les mauvaises données ou trop de lignes.SELECT : avant d'utiliser DELETE, il est recommandé d'exécuter un SELECT avec la même condition pour vérifier que le résultat est correct.DELETE supprime uniquement les données, pas la table ni ses colonnes.Supprimons un client à l'aide de son identifiant :
DELETE FROM customer
WHERE customer_id = 1;
Remarque : grâce à WHERE customer_id = 1, une seule ligne précise sera supprimée.
Supprimons les paiements effectués avant une certaine date :
DELETE FROM payment
WHERE payment_date < '2005-05-25';
Résultat : toutes les lignes de payment dont la date de paiement est antérieure à la date indiquée seront supprimées.
Parfois, il faut supprimer des lignes en fonction d'une condition provenant d'une autre table. Par exemple, supprimons les paiements des clients inactifs :
DELETE FROM payment
WHERE customer_id IN (
SELECT customer_id
FROM customer
WHERE active = 0
);
Résultat : tous les paiements des clients marqués comme inactifs seront supprimés.
Si vous devez vider complètement une table, DELETE peut aussi être utilisé sans WHERE :
DELETE FROM temp_import;
Remarque : la table temp_import existera toujours, mais toutes ses lignes auront été supprimées.
Une bonne pratique consiste à examiner d'abord les lignes concernées :
-- D'abord vérifier les lignes
SELECT customer_id, first_name, last_name, active
FROM customer
WHERE active = 0;
-- Seulement après vérification, exécuter le DELETE
DELETE FROM customer
WHERE active = 0;
Cette approche aide à éviter la suppression accidentelle de données supplémentaires.
DELETE est particulièrement utilePoints clés de cette leçon :
DELETE supprime des lignes existantes d'une table.WHERE, toutes les lignes de la table seront supprimées.SELECT avec la même condition.DELETE conserve la structure de la table — seules les données sont supprimées.