CREATE SCHEMA(7) | SQL Commands | CREATE SCHEMA(7) |
CREATE SCHEMA - 定義一個新的模式
CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]
CREATE SCHEMA 將在當前數據庫裏輸入一個新的模式。 該模式名將在當前數據庫裏現存的所有模式名中唯一。
模式實際上是一個名字空間:
它包含命名對象(表,數據類型,函數和操作符)這些名字可以和其它模式裏存在的其它對象重名。
命名對象要麼是通過用模式名作爲前綴"修飾"這些它們的名字進行訪問,
要麼是通過設置一個搜索路徑包含所需要的模式。
無修飾的對象都是在當前模式中創建的(在搜索路徑最前面的;可以用函數
current_schema 來判斷)。
另外,CREATE SCHEMA
可以包括在新模式中創建對象的子命令。
這些子命令和那些在創建完模式後發出的命令沒有任何區別,只不過是如果使用了
AUTHORIZATION 子句,
那麼所有創建的對象都將被該用戶擁有。
要創建模式,調用該命令的用戶必需在當前數據庫上有 CREATE 權限。(當然,超級用戶繞開這個檢查。)
創建一個模式:
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;
SQL 標準允許在 CREATE SCHEMA 裏面有一個 DEFAULT CHARACTER SET 子句,以及比目前 PostgreSQL 可以接受的更多的子命令。
SQL 標準聲明在 CREATE SCHEMA
裏的子命令可以以任意順序出現。
目前 PostgreSQL
裏的實現還不能處理所有子命令裏需要提前引用的情況;有時候可能需要重排一下子命令的順序以避免前向引用。
在 SQL
標準裏,模式的所有者總是擁有其中的所有對象。
PostgreSQL
允許模式包含非模式所有者所有的對象。
只有在模式所有者 CREATE
了自己的模式的權限給了其它人才可能出現。
ALTER SCHEMA [alter_schema(7)], DROP SCHEMA [drop_schema(l)]
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |