Présentation
PostgreSQL propose deux méthodes de ligne de commande pour supprimer une base de données - en utilisant DROP DATABASE
instruction ou un utilitaire shell.
La suppression des bases de données inutilisées est une bonne pratique et permet de garder l'espace de travail propre. Cependant, gardez à l'esprit que la suppression d'une base de données PostgreSQL existante supprime toutes les entrées de catalogue et les données de cette base de données.
Continuez à lire pour savoir comment déposer une base de données dans PostgreSQL.
Prérequis
- PostgreSQL 10 ou supérieur installé et configuré (suivez notre guide pour Ubuntu ou Windows ; si déjà installé, vérifiez la version de PostgreSQL sur le système).
- Accès au terminal avec les privilèges sudo.
Énoncé DROP DATABASE
Important :SEUL le propriétaire de la base de données peut supprimer une base de données.
La première méthode pour supprimer une base de données PostgreSQL consiste à utiliser l'instruction SQL suivante :
DROP DATABASE <database name>;
La commande supprime le répertoire contenant les informations de la base de données et les entrées du catalogue. Seul le propriétaire de la base de données peut exécuter le DROP DATABASE
commande. Si quelqu'un utilise actuellement la base de données, la commande ne s'exécute pas.
Pour voir comment DROP DATABASE
fonctionne, procédez comme suit :
1. Ouvrez le terminal (CTRL +ALT +T ).
2. Connectez-vous à PostgreSQL :
sudo -i -u postgres psql
3. Créez une base de données pour l'exemple :
CREATE DATABASE example;
Le terminal imprime l'instruction exécutée.
4. Lister toutes les bases de données avec :
\l
La base de données de l'étape précédente apparaît dans la liste.
5. Déposez la base de données avec :
DROP DATABASE example;
La sortie montre l'instruction exécutée.
6. Répertoriez toutes les bases de données :
\l
L'exemple de base de données n'apparaît plus dans la liste.
SI existe
Le IF EXISTS
l'option est ouverte pour toutes les versions où DROP DATABASE
est disponible. La syntaxe complète de la commande avec le IF EXISTS
l'option est la suivante :
DROP DATABASE IF EXISTS <database name>;
L'option vérifie d'abord si une base de données existe avant de la supprimer. Si une base de données existe, la commande supprime la base de données. Cependant, si une base de données n'existe pas, la commande imprime un message informatif.
Pour tester le fonctionnement de la commande, suivez les étapes ci-dessous :
1. Créez un exemple de base de données :
CREATE DATABASE example;
2. Supprimez la base de données à l'aide de IF EXISTS
choix :
DROP DATABASE IF EXISTS example;
Le résultat est identique à l'utilisation de DROP DATABASE
si la base de données existe.
3. La base de données n'est plus disponible. Réexécutez la commande pour voir le résultat :
DROP DATABASE IF EXISTS example;
Un message d'avertissement s'imprime indiquant que la base de données n'existe pas.
4. Pour voir la différence entre l'utilisation de IF EXISTS
et en omettant l'option, exécutez la commande suivante :
DROP DATABASE example;
Utilisation de DROP DATABASE
sans le IF EXISTS
option sur une base de données inexistante génère un message d'erreur.
AVEC (FORCER)
Le WITH (FORCE)
L'option est disponible dans PostgreSQL version 13 et supérieure.
La DROP DATABASE
La méthode ne supprimera pas la base de données si elle est en cours d'utilisation. Si la base de données est en cours d'utilisation, le terminal imprime une erreur indiquant qu'une session de base de données est ouverte.
Ajoutez le WITH (FORCE)
option pour fermer de force la session et supprimer la base de données :
DROP DATABASE <database name> WITH (FORCE);
Si possible, Postgres ferme la session de l'utilisateur et supprime la base de données avec force.
L'utilitaire dropdb
L'utilitaire shell dropdb est un wrapper pour la DROP DATABASE
commande. En effet, les deux méthodes sont identiques. Cependant, dropdb offre des options supplémentaires, notamment la suppression de bases de données à distance.
La syntaxe de base est :
dropdb <connection parameters> <options> <database name>
Options
Le tableau ci-dessous montre toutes les options possibles lors de l'utilisation de l'utilitaire dropdb.
Option | Type | Description |
---|---|---|
-e --echo | Option | Imprime les commandes que dropdb envoie au serveur. |
-f --force | Option | Tente de mettre fin à toutes les connexions en cours avant de supprimer la base de données. |
-i --interactive | Option | Demande de vérification avant d'exécuter la suppression de la base de données. |
-V --version | Option | La console imprime la version de l'utilitaire. |
--if-exists | Option | Imprime un avis au lieu d'une erreur si la base de données n'existe pas. |
-? --help | Option | Afficher le menu d'aide. |
-h <host> --host=<host> | Paramètre de connexion | Spécifie le nom d'hôte de la machine sur laquelle le serveur est exécuté. |
-p <port> --port=<port> | Paramètre de connexion | Spécifie le port TCP sur lequel le serveur écoute. |
-U <username> --username <username> | Paramètre de connexion | Se connecter en tant qu'utilisateur spécifié. |
-w --no-password | Paramètre de connexion | N'émettez jamais l'invite de mot de passe. Utile pour les travaux par lots et de script lorsqu'aucun utilisateur n'est présent. |
-W --password | Paramètre de connexion | Forcer l'invite de mot de passe. Sans l'option, le serveur perd la tentative de connexion si un mot de passe est nécessaire. |
--maintenance-db=<database name> | Paramètre de connexion | L'option spécifie la connexion du nom de la base de données. |
Par exemple, essayez la commande suivante pour voir comment dropdb fonctionne avec le -i
et -e
option :
dropdb -i -e example
Le programme demande une confirmation avant la suppression à cause du -i
balise.
Appuyez sur y confirmer. Le programme imprime les commandes générées sur le serveur. Comme la base de données est inexistante, le programme génère une erreur et se termine.