DROP DATABASE – Supprimer une base
Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 4 minutes
En SQL, la commande DROP DATABASE permet de supprimer totalement une base de données et tout ce qu’elle contient. Cette commande est à utiliser avec beaucoup d’attention car elle permet de supprimer tout ce qui est inclus dans une base : les tables, les données, les index, les vues, les procédures stockées, etc.
Attention : La suppression est définitive et irréversible (sauf si vous avez une sauvegarde). Il est impératif de faire une sauvegarde avant d’exécuter cette commande.
Syntaxe
Section titled “Syntaxe”Pour supprimer la base de données ma_base, la requête est la suivante :
DROP DATABASE ma_base;Attention : Cette commande supprime toutes les tables et toutes les données de cette base. Si vous n’êtes pas sûr de ce que vous faites, n’hésitez pas à effectuer une sauvegarde de la base avant de la supprimer.
Ne pas afficher d’erreur si la base n’existe pas
Section titled “Ne pas afficher d’erreur si la base n’existe pas”Par défaut, si le nom de base utilisé n’existe pas, la requête retournera une erreur. Pour éviter d’obtenir cette erreur, il est possible d’utiliser l’option IF EXISTS. La syntaxe sera alors la suivante :
DROP DATABASE IF EXISTS ma_base;Cette syntaxe est supportée par MySQL, MariaDB, PostgreSQL (depuis la version 9.0) et SQL Server.
Bon à savoir : Oracle n’utilise pas
DROP DATABASEcomme les autres SGBD. La suppression d’un schéma s’effectue avecDROP USER ... CASCADE(nous verrons cela dans la section compatibilité).
Exemple concret
Section titled “Exemple concret”MySQL :
Création puis suppression d’une base de données test :
-- Créer la base de donnéesCREATE DATABASE test;
-- Vérifier qu'elle existeSHOW DATABASES;
-- Supprimer la base de donnéesDROP DATABASE test;PostgreSQL :
-- Créer la base de donnéesCREATE DATABASE test;
-- Lister les bases\l
-- Supprimer la base de donnéesDROP DATABASE IF EXISTS test;Compatibilité entre SGBD
Section titled “Compatibilité entre SGBD”| SGBD | Syntaxe | IF EXISTS |
|---|---|---|
| MySQL / MariaDB | DROP DATABASE nom; |
Oui |
| PostgreSQL | DROP DATABASE nom; |
Oui (v9.0+) |
| SQL Server | DROP DATABASE nom; |
Oui (v2016+) |
| Oracle | DROP USER nom CASCADE; (supprime le schéma) |
Non |
Oracle : Comme évoqué précédemment, Oracle utilise des schémas (associés à des utilisateurs). Pour supprimer un schéma et tout son contenu :
-- Se connecter en tant qu'administrateurCONNECT system/mot_de_passe;
-- Supprimer l'utilisateur et son schémaDROP USER mon_schema CASCADE;Le mot-clé CASCADE est important car il supprime également tous les objets appartenant à l’utilisateur (tables, vues, procédures, etc.).
Précautions d’usage
Section titled “Précautions d’usage”1. Effectuer une sauvegarde
Section titled “1. Effectuer une sauvegarde”Avant de supprimer une base de données, assurez-vous d’avoir une sauvegarde récente :
# MySQLmysqldump -u utilisateur -p ma_base > backup_ma_base.sql
# PostgreSQLpg_dump -U utilisateur ma_base > backup_ma_base.sql2. Vérifier que vous êtes sur le bon serveur
Section titled “2. Vérifier que vous êtes sur le bon serveur”-- MySQL : afficher la base actuelleSELECT DATABASE();
-- PostgreSQL : afficher la base actuelleSELECT current_database();3. Utiliser une transaction (si supporté)
Section titled “3. Utiliser une transaction (si supporté)”Certains SGBD permettent d’utiliser DROP DATABASE dans une transaction, ce qui permet d’annuler si nécessaire :
-- PostgreSQL uniquement (avec transaction)BEGIN;DROP DATABASE ma_base;-- Vérifier...ROLLBACK; -- ou COMMIT;Remarque : Dans MySQL,
DROP DATABASEest implicite et ne peut pas être annulé par unROLLBACK(car cela provoque une validation implicite de la transaction).
4. Vérifier les connexions actives
Section titled “4. Vérifier les connexions actives”Avant de supprimer une base, assurez-vous qu’aucun utilisateur n’y est connecté :
PostgreSQL :
-- Voir les connexions activesSELECT pid, usename, application_name, client_addrFROM pg_stat_activityWHERE datname = 'ma_base';
-- Forcer la déconnexion des utilisateursSELECT pg_terminate_backend(pid)FROM pg_stat_activityWHERE datname = 'ma_base' AND pid <> pg_backend_pid();MySQL :
-- Voir les connexions activesSHOW PROCESSLIST;
-- Forcer la déconnexion (avec KILL)KILL [connection_id];Erreurs courantes
Section titled “Erreurs courantes”| Erreur | Cause | Solution |
|---|---|---|
Cannot drop database "ma_base" |
Base inexistante (sans IF EXISTS) |
Ajouter IF EXISTS ou vérifier l’existence |
Access denied for user |
Privilèges insuffisants | Vérifier les droits de l’utilisateur |
Database is currently in use |
Des connexions actives sont présentes | Déconnecter les utilisateurs (voir ci-dessus) |
ERROR: database "ma_base" does not exist |
Base inexistante (PostgreSQL) | Utiliser IF EXISTS ou vérifier avant |
ORA-01940: cannot drop a user that is currently connected |
Utilisateur connecté (Oracle) | Déconnecter l’utilisateur ou utiliser ALTER USER ... pour le déconnecter |
Utilisation dans les scripts
Section titled “Utilisation dans les scripts”Dans les scripts d’installation ou de déploiement, il est courant d’utiliser DROP DATABASE IF EXISTS pour s’assurer qu’on repart d’une base propre :
-- MySQL / MariaDBDROP DATABASE IF EXISTS mon_app;CREATE DATABASE mon_app;-- PostgreSQLDROP DATABASE IF EXISTS mon_app;CREATE DATABASE mon_app;Bon à savoir : Dans un script d’installation, il est plus prudent de laisser l’utilisateur confirmer avant de supprimer une base existante, surtout en production.
Alternatives
Section titled “Alternatives”Si vous souhaitez conserver la structure de la base mais supprimer uniquement les données, utilisez plutôt TRUNCATE sur chaque table ou un script qui génère les commandes TRUNCATE pour toutes les tables.
Bonnes pratiques
Section titled “Bonnes pratiques”-
Effectuez toujours une sauvegarde avant de supprimer une base de données.
-
Vérifiez que vous êtes sur l’environnement correct (développement vs production).
-
Utilisez
IF EXISTSdans vos scripts pour éviter les erreurs inutiles (si votre SGBD le supporte). -
Déconnectez tous les utilisateurs avant la suppression pour éviter les erreurs de connexion active.
-
Limitez l’usage de
DROP DATABASEen production : dans la plupart des cas, il est préférable de ne supprimer des bases qu’en environnement de développement ou lors d’une migration contrôlée. -
Documentez toutes les suppressions de bases de données (date, raison, responsable, etc.) pour garder une trace.
Prochain chapitre
Section titled “Prochain chapitre”Vous savez désormais comment supprimer une base de données avec DROP DATABASE. Passons maintenant à la création des tables qui contiendront vos données.
👉 Chapitre 28 : CREATE TABLE – Créer une table
Bonne continuation !
Junior TSAFACK – 08/08/2026