CREATE SCHEMA
CREATE SCHEMA — Définir un nouveau schéma
Synopsis
CREATE SCHEMA nom_schéma [ AUTHORIZATION nom_utilisateur ] [ élément_schéma [ ... ] ]
CREATE SCHEMA AUTHORIZATION nom_utilisateur [ élément_schéma [ ... ] ]
Description
CREATE SCHEMA
crée un
nouveau schéma dans la base de données. Le nom du schéma doit être
unique au sein de la base de données.
Un schéma est essentiellement un tablespace : il contient des
objets nommés (tables, types de données, fonctions et opérateurs)
dont les noms peuvent être identiques à ceux d'objets d'autres
schémas. Les objets nommés sont accessibles en préfixant leur nom
de celui du schéma (on dit alors que le nom est « qualifié » du nom du schéma), ou par la
configuration d'un chemin de recherche incluant le(s) schéma(s)
désiré(s). Une commande
CREATE
qui spécifie un objet non
qualifié crée l'objet dans le schéma courant (le premier dans le
chemin de recherche, obtenu par la fonction current_schema).
CREATE SCHEMA
peut
éventuellement inclure des sous-commandes de création d'objets dans
le nouveau schéma. Les sous-commandes sont traitées à la façon de
commandes séparées lancées après la création du schéma. La
différence réside dans l'utilisation de la clause AUTHORIZATION. Dans ce cas, l'utilisateur est
propriétaire de tous les objets créés.
Paramètres
-
nom_schéma
-
Le nom du schéma à créer. S'il est oublié, le nom de
l'utilisateur est utilisé comme nom de schéma. Le nom ne peut
pas débuter par pg_, ces noms étant
réservés aux schémas du système.
-
nom_utilisateur
-
Le nom de l'utilisateur à qui appartient le schéma. Par
défaut, il s'agit de l'utilisateur qui exécute la commande.
Seuls les superutilisateurs peuvent créer des schémas
possédés par d'autres utilisateurs.
-
élément_schéma
-
Une instruction SQL qui définit un objet à créer dans le
schéma. À ce jour, seules
CREATE TABLE
,
CREATE VIEW
,
CREATE SEQUENCE
,
CREATE TRIGGER
et
GRANT
peuvent être utilisées dans la commande
CREATE SCHEMA
. Les autres
types d'objets sont créés dans des commandes séparées après
la création du schéma.
Notes
Pour créer un schéma, l'utilisateur doit avoir le droit CREATE sur la base de données. (Les
superutilisateurs contournent cette vérification.)
Exemples
Créer un schéma :
CREATE SCHEMA mon_schema;
Créer un schéma pour l'utilisateur joe,
schéma nommé joe :
CREATE SCHEMA AUTHORIZATION joe;
Créer un schéma et lui ajouter une table et une vue :
CREATE SCHEMA hollywood
CREATE TABLE films (titre text, sortie date, recompenses text[])
CREATE VIEW gagnants AS
SELECT titre, sortie FROM films WHERE recompenses IS NOT NULL;
Les sous-commandes ne sont pas terminées par un point-virgule.
La même chose, autre écriture :
CREATE SCHEMA hollywood;
CREATE TABLE hollywood.films (titre text, sortie date, recompenses text[]);
CREATE VIEW hollywood.gagnants AS
SELECT titre, sortie FROM hollywood.films WHERE recompenses IS NOT NULL;
Compatibilité
Le standard SQL autorise une clause DEFAULT
CHARACTER SET dans
CREATE
SCHEMA
, et des types de sous-commandes en plus
grand nombre que ceux supportés actuellement par PostgreSQL™.
Le standard SQL n'impose pas d'ordre d'apparition des
sous-commandes dans
CREATE
SCHEMA
. L'implantation actuelle de PostgreSQL™ ne gère pas tous les cas de
références futures dans les sous-commandes. Il peut s'avérer
nécessaire de réordonner les sous-commandes pour éviter ces
références.
Dans le standard SQL, le propriétaire d'un schéma est également
propriétaire de tous les objets qui s'y trouvent. PostgreSQL™ permet à un schéma de
contenir des objets qui n'appartiennent pas à son propriétaire.
Cela n'est possible que si le propriétaire du schéma transmet le
privilège CREATE sur son schéma.