Skip to content

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.


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.


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 EXISTS pour 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 it
  1. Supprimer d’abord les clés étrangères (ou les tables dépendantes) avant de supprimer la table.

    -- Supprimer la contrainte de clé étrangère
    ALTER TABLE commande DROP FOREIGN KEY fk_commande_utilisateur;
    -- Puis supprimer la table
    DROP TABLE utilisateur;
  2. 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 CASCADE pour DROP TABLE (il faut supprimer les contraintes manuellement).

    SQL Server utilise CASCADE pour les contraintes, mais la syntaxe est différente (elle s’applique lors de la création de la contrainte).


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

  1. Libérer de l’espace disque : la suppression d’une table libère l’espace qu’elle occupait.
  2. Alléger les sauvegardes : supprimer des tables obsolètes réduit la taille des backups.
  3. 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.
  4. Nettoyer des tables temporaires : dans des scripts de test ou d’import, on crée souvent des tables temporaires qu’on supprime ensuite.

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)

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;

Avant de supprimer, listez les objets dépendants :

PostgreSQL :

SELECT * FROM pg_depend
WHERE refobjid = 'nom_table'::regclass;

MySQL :

SELECT * FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'nom_table';

SQL Server :

SELECT * FROM sys.foreign_keys
WHERE referenced_object_id = OBJECT_ID('nom_table');
BEGIN TRANSACTION;
DROP TABLE client_2009;
-- Vérifier...
ROLLBACK; -- ou COMMIT;

Remarque : Dans MySQL, DROP TABLE provoque 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 table
ALTER TABLE commande DROP FOREIGN KEY fk_commande_client;
-- Puis supprimer la table
DROP TABLE client;

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)”
DROP TABLE nom_table CASCADE;

Cette commande supprime également les vues, clés étrangères et autres objets qui dépendent de cette table.

DROP TABLE nom_table CASCADE CONSTRAINTS;

Cascade supprime les contraintes de clé étrangère qui référencent la table.


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