DROP TABLE – Supprimer une table
Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 4 minutes
La commande DROP TABLE en SQL permet de supprimer définitivement une table d’une base de données. Cela supprime en même temps les éventuels index, triggers, contraintes et permissions associées à cette table.
Attention : Il faut utiliser cette commande avec beaucoup de précaution car une fois supprimée, la table et toutes ses données sont perdues définitivement (sauf si vous disposez d’une sauvegarde). Avant de l’utiliser sur une base importante, il est judicieux d’effectuer un backup pour éviter les mauvaises surprises.
Syntaxe
Section titled “Syntaxe”Pour supprimer une table nom_table, il suffit d’utiliser la syntaxe suivante :
DROP TABLE nom_table;Avec vérification d’existence (IF EXISTS)
Section titled “Avec vérification d’existence (IF EXISTS)”Si vous n’êtes pas sûr que la table existe, vous pouvez utiliser l’option IF EXISTS pour éviter une erreur :
DROP TABLE IF EXISTS nom_table;Cette option est supportée par MySQL, MariaDB, PostgreSQL (depuis la version 9.0), SQL Server et SQLite.
Supprimer plusieurs tables
Section titled “Supprimer plusieurs tables”Il est possible de supprimer plusieurs tables en une seule commande :
DROP TABLE table1, table2, table3;Bon à savoir : Si une des tables n’existe pas, la commande échoue (sauf si vous utilisez
IF EXISTSpour chaque table).
Gestion des dépendances (clés étrangères)
Section titled “Gestion des dépendances (clés étrangères)”S’il existe des dépendances avec d’autres tables (notamment des clés étrangères qui référencent la table à supprimer), le SGBD refusera la suppression par défaut.
Exemple d’erreur :
DROP TABLE utilisateur;-- ERROR: cannot drop table utilisateur because other objects depend on itSolutions
Section titled “Solutions”-
Supprimer d’abord les clés étrangères (ou les tables dépendantes) avant de supprimer la table.
-- Supprimer la contrainte de clé étrangèreALTER TABLE commande DROP FOREIGN KEY fk_commande_utilisateur;-- Puis supprimer la tableDROP TABLE utilisateur; -
Utiliser
CASCADE(selon le SGBD) pour supprimer automatiquement les objets dépendants (comme les clés étrangères, les vues, etc.).PostgreSQL :
DROP TABLE utilisateur CASCADE;MySQL / MariaDB ne supporte pas
CASCADEpourDROP TABLE(il faut supprimer les contraintes manuellement).SQL Server utilise
CASCADEpour les contraintes, mais la syntaxe est différente (elle s’applique lors de la création de la contrainte).
Exemple concret
Section titled “Exemple concret”Imaginons qu’une base de données possède une table client_2009 qui ne sera plus jamais utilisée et qui existe déjà dans un ancien backup. Pour supprimer cette table, il suffit d’effectuer la requête suivante :
DROP TABLE client_2009;L’exécution de cette requête supprime définitivement la table et toutes ses données.
Différence entre DROP TABLE et TRUNCATE / DELETE
Section titled “Différence entre DROP TABLE et TRUNCATE / DELETE”| Commande | Supprime la structure | Supprime les données | Peut utiliser WHERE | Peut annuler (ROLLBACK) | Déclenche les triggers |
|---|---|---|---|---|---|
DROP TABLE |
Oui | Oui | Non | Non (sauf transaction dans certains SGBD) | Oui (avant suppression) |
TRUNCATE |
Non | Oui (toutes) | Non | Oui (dans la plupart) | Non |
DELETE |
Non | Oui (sélectif) | Oui | Oui | Oui |
Intérêts de DROP TABLE
Section titled “Intérêts de DROP TABLE”- Libérer de l’espace disque : la suppression d’une table libère l’espace qu’elle occupait.
- Alléger les sauvegardes : supprimer des tables obsolètes réduit la taille des backups.
- Améliorer la clarté du schéma : pour un développeur ou un administrateur, ne garder que les tables utilisées facilite la compréhension de l’application.
- Nettoyer des tables temporaires : dans des scripts de test ou d’import, on crée souvent des tables temporaires qu’on supprime ensuite.
Compatibilité entre SGBD
Section titled “Compatibilité entre SGBD”| SGBD | Syntaxe de base | IF EXISTS | CASCADE pour supprimer les dépendances |
|---|---|---|---|
| MySQL / MariaDB | DROP TABLE nom; |
Oui | Non (doit supprimer les contraintes manuellement) |
| PostgreSQL | DROP TABLE nom; |
Oui | Oui (CASCADE) |
| SQL Server | DROP TABLE nom; |
Oui | Non (les contraintes doivent être supprimées manuellement) |
| Oracle | DROP TABLE nom; |
Non | Oui (CASCADE CONSTRAINTS) |
| SQLite | DROP TABLE nom; |
Oui | Non (mais gère automatiquement certaines dépendances) |
Précautions et bonnes pratiques
Section titled “Précautions et bonnes pratiques”1. Effectuer une sauvegarde
Section titled “1. Effectuer une sauvegarde”Avant de supprimer une table, assurez-vous d’avoir une sauvegarde récente :
-- Créer une copie de la table avant suppression (MySQL, PostgreSQL, SQLite)CREATE TABLE nom_table_backup AS SELECT * FROM nom_table;2. Vérifier les dépendances
Section titled “2. Vérifier les dépendances”Avant de supprimer, listez les objets dépendants :
PostgreSQL :
SELECT * FROM pg_dependWHERE refobjid = 'nom_table'::regclass;MySQL :
SELECT * FROM information_schema.KEY_COLUMN_USAGEWHERE REFERENCED_TABLE_NAME = 'nom_table';SQL Server :
SELECT * FROM sys.foreign_keysWHERE referenced_object_id = OBJECT_ID('nom_table');3. Utiliser une transaction (si possible)
Section titled “3. Utiliser une transaction (si possible)”BEGIN TRANSACTION;DROP TABLE client_2009;-- Vérifier...ROLLBACK; -- ou COMMIT;Remarque : Dans MySQL,
DROP TABLEprovoque une validation implicite de la transaction (ne peut pas être annulé).
4. Supprimer les dépendances avant la table
Section titled “4. Supprimer les dépendances avant la table”-- Supprimer les clés étrangères qui référencent la tableALTER TABLE commande DROP FOREIGN KEY fk_commande_client;
-- Puis supprimer la tableDROP TABLE client;5. Documenter l’opération
Section titled “5. Documenter l’opération”Pour garder une trace des modifications, notez la date, la raison et le responsable de la suppression.
Cas particulier : utiliser CASCADE (PostgreSQL, Oracle)
Section titled “Cas particulier : utiliser CASCADE (PostgreSQL, Oracle)”PostgreSQL
Section titled “PostgreSQL”DROP TABLE nom_table CASCADE;Cette commande supprime également les vues, clés étrangères et autres objets qui dépendent de cette table.
Oracle
Section titled “Oracle”DROP TABLE nom_table CASCADE CONSTRAINTS;Cascade supprime les contraintes de clé étrangère qui référencent la table.
Prochain chapitre
Section titled “Prochain chapitre”Vous savez désormais comment supprimer une table avec DROP TABLE. Il est maintenant temps de découvrir les jointures, qui permettent de lier plusieurs tables entre elles pour obtenir des résultats combinés.
👉 Chapitre 31 : Introduction aux jointures
Bonne continuation !
Junior TSAFACK – 08/08/2026