Sql:DELETE
| Fiche express | |
|---|---|
| Type | Commande SQL standard |
| Catégorie | DML (Data Manipulation Language) |
| Rôle | Supprimer des lignes existantes dans une table |
| Voir aussi | Sql · Sql:DROP · Sql:UPDATE |
DELETE est la commande SQL de suppression de lignes à l'intérieur d'une table.
Contrairement à Sql:DROP, qui supprime l'objet table lui-même (structure comprise),
DELETE ne touche qu'aux données : la table et sa définition restent en place, seules
les lignes correspondant à la clause WHERE disparaissent.
Syntaxe
DELETE FROM nom_table
[WHERE condition];
Sans clause WHERE, la commande supprime toutes les lignes de la table (la
table reste vide mais existe toujours) — même précaution que pour Sql:UPDATE : valider la
sélection avec un Sql:SELECT utilisant la même condition avant d'exécuter le DELETE.
Exemples
-- Supprimer une ligne précise
DELETE FROM utilisateurs WHERE id = 42;
-- Supprimer selon un filtre texte
DELETE FROM utilisateurs WHERE email LIKE '%@domaine-obsolete.example';
-- Vérifier d'abord la sélection avec un SELECT équivalent
SELECT * FROM utilisateurs WHERE actif = 0 AND derniere_connexion < '2020-01-01';
-- puis, une fois la sélection validée :
DELETE FROM utilisateurs WHERE actif = 0 AND derniere_connexion < '2020-01-01';
-- Suppression bornée dans le temps (purge de lignes obsolètes)
DELETE FROM logs WHERE date_creation < NOW() - INTERVAL 90 DAY;
Pour supprimer toutes les lignes d'une table sans condition, TRUNCATE TABLE
(commande DDL) est en général bien plus rapide qu'un DELETE FROM table; sans
WHERE — il ne journalise pas ligne par ligne, mais n'est en général pas
annulable et ne déclenche pas les triggers DELETE.
Variantes par moteur
- MySQL/MariaDB :
DELETE t1 FROM t1 JOIN t2 ON ... WHERE ..., jointure
possible directement dans le DELETE.
- PostgreSQL :
DELETE FROM table USING autre_table WHERE ...pour filtrer
via une autre table.
- Oracle : pas de
LIMIT— pour borner le nombre de lignes supprimées,
s'appuie surROWNUMouFETCH FIRST n ROWS ONLYdans une sous-requête.
Voir aussi
- Sql — panorama du langage SQL
- Sql:DROP — supprimer l'objet table (structure comprise)
- Sql:UPDATE — modifier des lignes sans les supprimer
- Sql:SELECT — vérifier la sélection avant de supprimer