| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]
CREATE SCHEMA 在目前資料庫裡輸入一個新的模式。 該模式名將在目前資料庫裡現存的所有模式名中唯一。
模式實際上是一個名字空間: 它包含命名對像(資料表,資料類型,函數和操作符)這些名字可以和其它模式裡存在的其它對像重名。 命名對像要麼是透過用模式名作為前綴"修飾"這些它們的名字進行訪問, 要麼是透過設置一個搜索路徑包含所需要的模式。 一條帶著無修飾對像名的 CREATE 命令都是在目前模式中建立的(在搜索路徑最前面的;可以用函數 current_schema 來判斷)。
另外,CREATE SCHEMA 可以包括在新模式中建立對象的子命令。 這些子命令和那些在建立完模式後發出的命令沒有任何區別,只不過是如果使用了 AUTHORIZATION 子句, 那麼所有建立的對象都將被該用戶擁有。
要建立的模式名字。如果省略,則使用用戶名作為模式名。 這個名字不能以 pg_ 開頭,因為這樣的名字保留給系統模式使用。
將擁有該模式的用戶名。如果省略,預設為執行該命令的用戶名。 只有超級用戶才能建立不屬於自己的模式。
一個 SQL 語句,定義一個要在模式裡建立的對象。 目前,只有 CREATE TABLE,CREATE VIEW,CREATE INDEX, CREATE SEQUENCE,CREATE TRIGGER 和 GRANT 是在 CREATE SCHEMA 裡面可以接受的子句。 其它類型的對象可以在建立完模式之後的獨立的命令裡建立。
建立一個模式:
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 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;