Leçon 22 : Suppression de Données (DELETE vs. TRUNCATE)
Nous couvrons deux façons principales de supprimer des données des tables, à la fois DML (DELETE) et DDL (TRUNCATE).
1. Instruction DELETE (DML)
DELETE supprime des lignes d'une table en fonction d'une condition WHERE. Comme UPDATE, omettre WHERE supprime toutes les lignes, mais c'est plus lent que TRUNCATE car il journalise chaque suppression (permet l'annulation—rollback).
Syntaxe
sql DELETE FROM [nom_de_la_table] WHERE [condition];
Exemple : Suppression de Comptes Inactifs
Supprimer tous les clients qui n'ont pas passé de commande depuis 2020.
sql DELETE FROM Customers WHERE LastOrderDate < '2020-01-01';
2. TRUNCATE TABLE (DDL)
TRUNCATE TABLE supprime toutes les lignes d'une table rapidement et réinitialise les compteurs d'auto-incrémentation. C'est beaucoup plus rapide que DELETE car il traite les données par blocs plus grands, mais il ne peut généralement pas être annulé (rolled back).
TRUNCATEest une commande DDL car elle modifie l'état de la structure de la table (le compteur est réinitialisé).
Syntaxe
sql TRUNCATE TABLE [nom_de_la_table];
Différences Clés
| Caractéristique | DELETE | TRUNCATE |
|---|---|---|
| Vitesse | Plus lent (journalise ligne par ligne) | Beaucoup plus Rapide (désalloue le stockage) |
| Clause WHERE | Oui, permet le filtrage | Non, supprime tout |
| Annulation (Rollback) | Oui (généralement) | Non (généralement, dépend du SGBD) |
| Réinitialisation du Compteur PK | Non | Oui |
| Type | DML | DDL |
Avertissement : Utilisez
TRUNCATEavec une extrême prudence, car les données sont généralement parties définitivement.