Provided by: manpages-zh_1.5.1-2_all bug

NAME

       CREATE SCHEMA - 定义一个新的模式

SYNOPSIS

       CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]
       CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]

DESCRIPTION述
       CREATE             SCHEMA            将在当前数据库里输入一个新的模式。
       该模式名将在当前数据库里现存的所有模式名中唯一。

        模式实际上是一个名字空间:
       它包含命名对象(表,数据类型,函数和操作符)这些名字可以和其它模式里存在的其它对象重名。
       命名对象要么是通过用模式名作为前缀"修饰"这些它们的名字进行访问,
       要么是通过设置一个搜索路径包含所需要的模式。
       无修饰的对象都是在当前模式中创建的(在搜索路径最前面的;可以用函数
       current_schema 来判断)。

        另外,CREATE        SCHEMA        可以包括在新模式中创建对象的子命令。
       这些子命令和那些在创建完模式后发出的命令没有任何区别,只不过是如果使用了
       AUTHORIZATION 子句, 那么所有创建的对象都将被该用户拥有。

PARAMETERS数
       schemaname
               要创建的模式名字。如果省略,则使用用户名作为模式名。

       username
               将拥有该模式的用户名。如果省略,缺省为执行该命令的用户名。
              只有超级用户才能创建不属于自己的模式。

       schema_element
               一个 SQL 语句,定义一个要在模式里创建的对象。 目前,只有 CREATE
              TABLE,CREATE    VIEW,    和    GRANT    是在   CREATE   SCHEMA
              里面可以接受的子句。
              其它类型的对象可以在创建完模式之后的独立的命令里创建。

NOTES意
        要创建模式,调用该命令的用户必需在当前数据库上有                CREATE
       权限。(当然,超级用户绕开这个检查。)

EXAMPLES子
        创建一个模式:

       CREATE SCHEMA myschema;

        为用户 joe 创建模式 --- 模式也会叫 joe:

       CREATE SCHEMA AUTHORIZATION joe;

        创建一个模式并且在里面创建一个表:

       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;

        请注意上面的独立的子命令不是由分号结尾的。

        下面的命令是实现同样结果的等效语句:

       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性
        SQL  标准允许在  CREATE  SCHEMA  里面有一个  DEFAULT   CHARACTER   SET
       子句,以及比目前 PostgreSQL 可以接受的更多的子命令。

        SQL   标准声明在  CREATE  SCHEMA  里的子命令可以以任意顺序出现。  目前
       PostgreSQL
       里的实现还不能处理所有子命令里需要提前引用的情况;有时候可能需要重排一下子命令的顺序以避免前向引用。

        在   SQL    标准里,模式的所有者总是拥有其中的所有对象。    PostgreSQL
       允许模式包含非模式所有者所有的对象。       只有在模式所有者      CREATE
       了自己的模式的权限给了其它人才可能出现。

SEE ALSO见
       ALTER SCHEMA [alter_schema(7)], DROP SCHEMA [drop_schema(l)]

者
       Postgresql  <laser@pgsqldb.org>