--- /dev/null
+
+
+
+
+ CREATE SCHEMA
+ SQL - Language Statements
+
+
+
+ CREATE SCHEMA
+
+
+ define a new schema
+
+
+
+
+CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]
+CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]
+
+
+
+
+ Inputs
+
+
+
+
+ schemaname
+
+ The name of a schema to be created. If this is omitted, the username
+ is used as the schema name.
+
+
+
+
+
+ username
+
+ The name of the user who will own the schema. If omitted,
+ defaults to the user executing the command. Only superusers
+ may create schemas owned by users other than themselves.
+
+
+
+
+
+ schema_element
+
+ An SQL statement defining an object to be created within the schema.
+ Currently, only CREATE TABLE>, CREATE VIEW>,
+ and GRANT> are accepted as clauses within
+ CREATE SCHEMA>. Other kinds of objects may be created
+ in separate commands after the schema is created.
+
+
+
+
+
+
+
+
+
+ Outputs
+
+
+
+
+
+CREATE
+
+
+ Message returned if the command is successful.
+
+
+
+
+
+ERROR: namespace "schemaname" already exists
+
+
+ If the schema specified already exists.
+
+
+
+
+
+
+
+
+
+
+ Description
+
+ CREATE SCHEMA will enter a new schema
+ into the current database.
+ The schema name must be distinct from the name of any existing schema
+ in the current database.
+
+
+ A schema is essentially a namespace:
+ it contains named objects (tables, datatypes, functions, and operators)
+ whose names may duplicate those of other objects existing in other
+ schemas. Named objects are accessed either by qualifying>
+ their names with the schema name as a prefix, or by setting a search
+ path that includes the desired schema(s).
+
+
+ Optionally, CREATE SCHEMA can include subcommands
+ to create objects within the new schema. The subcommands are treated
+ essentially the same as separate commands issued after creating the
+ schema, except that if the AUTHORIZATION> clause is used,
+ all the created objects will be owned by that user.
+
+
+
+
+ Notes
+
+
+ To create a schema, the invoking user must have CREATE>
+ privilege for the current database. (Of course, superusers bypass
+ this check.)
+
+
+ Use DROP SCHEMA to remove a schema.
+
+
+
+
+
+
+ Examples
+
+ Create a schema:
+
+CREATE SCHEMA myschema;
+
+
+
+ Create a schema for user joe> --- the schema will also
+ be named joe>:
+
+CREATE SCHEMA AUTHORIZATION joe;
+
+
+
+ Create a schema and create a table and view within it:
+
+CREATE SCHEMA hollywood
+ CREATE TABLE films (title text, release date, awards text[])
+ CREATE VIEW winners AS
+ SELECT title, release FROM films WHERE awards IS NOT NULL;
+
+ Notice that the individual subcommands do not end with semicolons.
+
+
+ The following is an equivalent way of accomplishing the same result:
+CREATE SCHEMA hollywood;
+CREATE TABLE hollywood.films (title text, release date, awards text[]);
+CREATE VIEW hollywood.winners AS
+ SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL;
+
+
+
+
+
+
+ Compatibility
+
+
+
+
+ SQL92
+
+
+ SQL92 allows a DEFAULT CHARACTER SET> clause in
+ CREATE SCHEMA, as well as more subcommand types
+ than are presently accepted by
PostgreSQL.
+
+
+ SQL92 specifies that the subcommands in CREATE SCHEMA
+ may appear in any order. The present
+
PostgreSQL implementation does not handle all
+ cases of forward references in subcommands; it may sometimes be necessary
+ to reorder the subcommands to avoid forward references.
+
+
+ In SQL92, the owner of a schema always owns all objects within it.
+
PostgreSQL allows schemas to contain objects
+ owned by users other than the schema owner. This can happen only if the
+ schema owner grants CREATE> rights on his schema to someone
+ else.
+
+
+
+
+
+