?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ]
CREATE SCHEMA在當(dāng)前數(shù)據(jù)庫里輸入一個新模式。該模式名將在當(dāng)前數(shù)據(jù)庫里現(xiàn)存的所有模式名中唯一。
模式實際上是一個名字空間:它包含命名對象(表、數(shù)據(jù)類型、函數(shù)、操作符)這些名字可以和其它模式里存在的其它對象重名。
命名對象要么是通過用模式名作為前綴"修飾"進行訪問,要么是通過設(shè)置一個搜索路徑包含所需要的模式。
一條帶著無修飾對象名的CREATE命令都是在當(dāng)前模式中創(chuàng)建的(在搜索路徑最前面的模式;可以用current_schema
函數(shù)來判斷)。
可選的,CREATE SCHEMA可包含在新模式內(nèi)創(chuàng)建對象的子命令。 該子命令基本上與創(chuàng)建模式之后發(fā)布的獨立命令相同對待,除了使用 AUTHORIZATION的情況。所有創(chuàng)建的對象將由該用戶擁有 另外,CREATE SCHEMA可以包括在新模式中創(chuàng)建對象的子命令。 這些子命令和那些在創(chuàng)建完模式后發(fā)出的命令沒有任何區(qū)別, 只不過是如果使用了AUTHORIZATION子句,那么所有創(chuàng)建的對象都將被該用戶擁有。
要創(chuàng)建的模式名字。如果省略,則使用用戶名作為模式名。這個名字不能以 pg_開頭,因為這樣的名字保留給系統(tǒng)模式使用。
將擁有該模式的用戶的名稱。若省略,默認(rèn)該用戶用此命令。 只有超級用戶可以創(chuàng)建除其本身以外的其他用戶所有的模式。 將擁有該模式的用戶名。如果省略,缺省為執(zhí)行該命令的用戶名。 只有超級用戶才能創(chuàng)建不屬于自己的模式。
一個SQL語句,定義一個要在模式里創(chuàng)建的對象。目前,只有 CREATE TABLE,CREATE VIEW,CREATE INDEX,CREATE SEQUENCE,CREATE TRIGGER,GRANT是可以接受的子句。其它類型的對象可以在創(chuàng)建 完模式之后的獨立命令里創(chuàng)建。
要創(chuàng)建模式,調(diào)用該命令的用戶必需在當(dāng)前數(shù)據(jù)庫上有CREATE權(quán)限。 當(dāng)然,超級用戶可以繞開這個檢查。
創(chuàng)建一個模式:
CREATE SCHEMA myschema;
為用戶joe創(chuàng)建模式; 模式名也叫joe:
CREATE SCHEMA AUTHORIZATION joe;
創(chuàng)建一個模式并且在里面創(chuàng)建一個表:
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;
請注意上面獨立的子命令不是由分號結(jié)尾的。
下面的命令是實現(xiàn)同樣結(jié)果的等效語句:
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標(biāo)準(zhǔn)允許在CREATE SCHEMA里面有一個 DEFAULT CHARACTER SET子句以及比目前PostgreSQL 可以接受的更多的子命令。
SQL標(biāo)準(zhǔn)聲明在CREATE SCHEMA里的子命令可以以任意順序出現(xiàn)。 目前PostgreSQL里的實現(xiàn)還不能處理所有子命令里需 要提前引用的情況;有時候可能需要重排一下子命令的順序以避免前向引用。
在SQL標(biāo)準(zhǔn)里,模式的所有者總是擁有其中的所有對象。PostgreSQL 允許模式包含非模式所有者所有的對象。只有在模式所有者 CREATE 了自己的模式的 權(quán)限給了其他人才可能出現(xiàn)。