CREATE SCHEMA nom_schéma [ AUTHORIZATION nom_utilisateur ] [ élément_schéma [ ... ] ] CREATE SCHEMA AUTHORIZATION nom_utilisateur [ élément_schéma [ ... ] ]
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 espace de noms : 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.
Le nom du schéma à créer. S'il est oublié, le paramètre nomutilisateur 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.
Le nom de l'utilisateur à qui appartient le schéma. Par défaut, il s'agit de l'utilisateur qui exécute la commande. Pour créer un schéma dont le propriétaire est un autre rôle, vous devez être un membre direct ou indirect de ce rôle, ou être un superutilisateur.
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.
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.)
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;
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 ou si un superutilisateur choisir d'y créer des objets.