CREATE SCHEMA(7)

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>

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh