Skip to content

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.


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 DATABASE comme les autres SGBD. La suppression d’un schéma s’effectue avec DROP USER ... CASCADE (nous verrons cela dans la section compatibilité).


MySQL :

Création puis suppression d’une base de données test :

-- Créer la base de données
CREATE DATABASE test;
-- Vérifier qu'elle existe
SHOW DATABASES;
-- Supprimer la base de données
DROP DATABASE test;

PostgreSQL :

-- Créer la base de données
CREATE DATABASE test;
-- Lister les bases
\l
-- Supprimer la base de données
DROP DATABASE IF EXISTS test;

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'administrateur
CONNECT system/mot_de_passe;
-- Supprimer l'utilisateur et son schéma
DROP 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.).


Avant de supprimer une base de données, assurez-vous d’avoir une sauvegarde récente :

Terminal window
# MySQL
mysqldump -u utilisateur -p ma_base > backup_ma_base.sql
# PostgreSQL
pg_dump -U utilisateur ma_base > backup_ma_base.sql

2. 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 actuelle
SELECT DATABASE();
-- PostgreSQL : afficher la base actuelle
SELECT 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 DATABASE est implicite et ne peut pas être annulé par un ROLLBACK (car cela provoque une validation implicite de la transaction).

Avant de supprimer une base, assurez-vous qu’aucun utilisateur n’y est connecté :

PostgreSQL :

-- Voir les connexions actives
SELECT pid, usename, application_name, client_addr
FROM pg_stat_activity
WHERE datname = 'ma_base';
-- Forcer la déconnexion des utilisateurs
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'ma_base' AND pid <> pg_backend_pid();

MySQL :

-- Voir les connexions actives
SHOW PROCESSLIST;
-- Forcer la déconnexion (avec KILL)
KILL [connection_id];

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

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 / MariaDB
DROP DATABASE IF EXISTS mon_app;
CREATE DATABASE mon_app;
-- PostgreSQL
DROP 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.


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.


  1. Effectuez toujours une sauvegarde avant de supprimer une base de données.

  2. Vérifiez que vous êtes sur l’environnement correct (développement vs production).

  3. Utilisez IF EXISTS dans vos scripts pour éviter les erreurs inutiles (si votre SGBD le supporte).

  4. Déconnectez tous les utilisateurs avant la suppression pour éviter les erreurs de connexion active.

  5. Limitez l’usage de DROP DATABASE en 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.

  6. Documentez toutes les suppressions de bases de données (date, raison, responsable, etc.) pour garder une trace.


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