CREATE DATABASE
CREATE DATABASE — Créer une nouvelle base de données
Synopsis
CREATE DATABASE nom
[ [ WITH ] [ OWNER [=] propriétaire ]
[ TEMPLATE [=] modèle ]
[ ENCODING [=] codage ]
[ TABLESPACE [=] tablespace ]
[ CONNECTION LIMIT [=] limite_connexion ] ]
Description
CREATE DATABASE
crée
une nouvelle base de données.
Pour créer une base de données, il faut être superutilisateur ou
avoir le droit spécial CREATEDB. Voir à ce
sujet CREATE USER.
En fonctionnement normal, le créateur devient le propriétaire de la
nouvelle base. Les superutilisateurs peuvent créer des bases et en
donner la propriété à un autre utilisateur à l'aide de la clause
OWNER. Ils peuvent ainsi créer des bases
qui appartiennent à des utilisateurs sans droit particulier. Les
utilisateurs qui possèdent le privilège CREATEDB mais ne sont pas superutilisateur ne
peuvent créer que des bases de données dont ils sont propriétaires.
Par défaut, la nouvelle base de données est créée en clonant la
base système standard template1. Un modèle
différent peut être utilisé en écrivant TEMPLATE
nom
.
En particulier, la clause TEMPLATE
template0 permet de créer une base de données vierge qui ne
contient que les objets standards pré-définis dans la version de
PostgreSQL™ utilisée. C'est
utile pour ne pas copier les objets locaux ajoutés à template1.
Paramètres
-
nom
-
Le nom de la base de données à créer.
-
propriétaire
-
Le nom de l'utilisateur propriétaire de la nouvelle base de
données ou DEFAULT pour l'option par
défaut (c'est-à-dire le nom de l'utilisateur qui exécute la
commande).
-
modèle
-
Le nom du modèle squelette de la nouvelle base de données ou
DEFAULT pour le modèle par défaut
(template1).
-
codage
-
Le jeu de caractères de la nouvelle base de données.
Peut-être une chaîne (par exemple 'SQL_ASCII'), un nombre de jeu de caractères
de type entier ou DEFAULT pour le
jeu de caractères par défaut (en fait, celui de la base
modèle). Les jeux de caractères supportés par le serveur
PostgreSQL™ sont
décrits dans Section 21.2.1,
« Jeux de caractères supportés ».
-
tablespace
-
Le nom du tablespace associé à la nouvelle base de données ou
DEFAULT pour le tablespace de la
base de données modèle. Ce tablespace est celui par défaut
pour les objets créés dans cette base de données. Voir
CREATE TABLESPACE pour plus
d'informations.
-
limite_connexion
-
Le nombre de connexions concurrentes à la base de données. -1
(valeur par défaut) signifie qu'il n'y a pas de limite.
L'ordre des paramètres optionnels n'a aucune importance.
Notes
La commande
CREATE
DATABASE
ne peut pas être exécutée à l'intérieur
d'un bloc de transactions.
Les erreurs sur la ligne « ne peut
initialiser le répertoire de la base de données »
(« could not initialize database
directory » dans la version originale) sont le plus
souvent dues à des droits insuffisants sur le répertoire de
données, à un disque plein ou à un autre problème relatif au
système de fichiers.
L'instruction DROP DATABASE est utilisée pour supprimer la
base de données.
Le programme
createdb
est un
enrobage de cette commande fourni par commodité.
Bien qu'il soit possible de copier une base de données autre que
template1 en spécifiant son nom comme
modèle, cela n'est pas (encore) prévu comme une fonctionnalité
«
COPY
DATABASE
» d'usage général. La
limitation principale est qu'aucune autre session ne peut être
connectée à la base modèle pendant sa copie.
CREATE DATABASE
échouera s'il y a
une autre connexion au moment de son exécution ; sinon, les
nouveaux connexions à la base modèle seront verrouillées jusqu'à la
fin de la commande
CREATE
DATABASE
. La Section 19.3,
« Bases de données modèles » fournit plus
d'informations à ce sujet.
L'option CONNECTION LIMIT n'est
qu'approximativement contraignante ; si deux nouvelles sessions
commencent sensiblement en même temps alors qu'un seul
« connecteur » à la base est
disponible, il est possible que les deux échouent. De plus, les
superutilisateurs ne sont pas soumis à cette limite.
Exemples
Créer une nouvelle base de données :
CREATE DATABASE lusiadas;
Créer une base de données ventes possédée
par l'utilisateur app_ventes utilisant le
tablespace espace_ventes comme espace par
défaut :
CREATE DATABASE ventes OWNER app_ventes TABLESPACE espace_ventes;
Créer une base de données musique qui
supporte le jeu de caractères ISO-8859-1 :
CREATE DATABASE musique ENCODING 'LATIN1';
Compatibilité
Il n'existe pas d'instruction
CREATE
DATABASE
dans le standard SQL. Les bases de données
sont équivalentes aux catalogues, dont la création est définie par
l'implantation.