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;