Une base de données est un ensemble nommé d'objets SQL (« objets de base
de données »). En général, chaque objet de base de
données (table, fonction etc.) appartient à une et une seule base
de données (mais certains catalogues système, par exemple
pg_database, appartiennent à tout le
groupe et sont accessibles depuis toutes les bases de données du
groupe). Plus précisément, une base de données est une collection
de schémas et les schémas contiennent les tables, fonctions, etc.
Ainsi, la hiérarchie complète est : serveur, base de données,
schéma, table (ou un autre type d'objet, comme une fonction).
Lors de la connexion au serveur de bases de données, une
application cliente doit spécifier dans sa requête de connexion la
base de données à laquelle elle veut se connecter. Il n'est pas
possible d'accéder à plus d'une base de données via la même
connexion (mais une application n'est pas limitée dans le nombre de
connexions qu'elle établit avec une ou plusieurs bases de données).
Les bases de données sont séparées physiquement et le contrôle
d'accès est géré au niveau de la connexion. Si une instance de
serveur PostgreSQL™ doit
héberger des projets ou des utilisateurs censés rester séparés et
sans interaction, il est recommandé de les répartir sur plusieurs
bases de données. Si les projets ou les utilisateurs sont reliés et
doivent pouvoir partager leurs ressources, alors ils devraient être
placés dans la même base de données mais éventuellement dans des
schémas différents. Les schémas sont une structure purement logique
et qui peut accéder à ce qui est géré par le système des droits.
Pour plus d'informations sur la manipulation des schémas, voir la
Section 5.7, « Schémas ».
Les bases de données sont créées avec la commande
CREATE DATABASE
(voir la
Section 19.2,
« Création d'une base de données ») et détruites avec
la commande
DROP
DATABASE
(voir la Section 19.5,
« Détruire une base de données »). Pour déterminer
l'ensemble des bases de données existantes, examinez le catalogue
système pg_database, par exemple
SELECT datname FROM pg_database;
La méta-commande \l du programme
psql(1)
et l'option en ligne de commande -l sont
aussi utiles pour afficher les bases de données existantes.
Note
Le standard SQL appelle les
bases de données des « catalogues » mais il n'y a aucune
différence en pratique.