table of contents
CREATE DATABASE(7) | SQL Commands | CREATE DATABASE(7) |
NAME¶
CREATE DATABASE - 創建新數據庫
SYNOPSIS¶
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] dbowner ]
[ LOCATION [=] 'dbpath' ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ] ]
DESCRIPTION 描述¶
CREATE DATABASE 創建一個新的 PostgreSQL 數據庫。
要創建一個數據庫,你必須是一個超級用戶或者有特殊的
CREATEDB 權限。 參閱 CREATE USER
[create_user(7)]。
通常,創建者成爲新數據庫的管理員。
超級用戶可以用 OWNER
子句創建其它用戶所有的數據庫。
他們甚至可以創建沒有特殊權限的用戶所有的數據庫。
有CREATEDB權限的非超級用戶使用只能創建自己使用的數據庫。
可以聲明一個可選的數據庫位置,例如,在另一塊硬盤上存放數據庫。
該路徑必須是事先用
initlocation[initlocation(1)]
命令準備好了的。
如果路徑名不包含斜槓,那麼它被解釋成一個環境變量,
該變量必須爲服務進程所知。這樣數據庫管理員
可以對能夠在那裏創建數據庫進行控制。(例如,一個用戶化的選擇是
'PGDATA2'。)如果服務器帶着
ALLOW_ABSOLUTE_DBPATHS
(缺省時沒有)選項編譯,
那麼也允許使用以斜槓開頭爲標識的絕對路徑(例如,
' '/usr/local/pgsql/data')。 In either case, the final path
name must be absolute and must not contain any single quotes.
缺省時,新數據庫將通過克隆標準系統數據庫
template1
來創建。不同的模板可以用
TEMPLATE = name
來寫。尤其是,如果你用
TEMPLATE = template0,
你可以創建一個很純淨的數據庫,只包括你的版本的
PostgreSQL 預定義的
標準對象。這個方法可以避免把任何已經加入到template1
裏的本地安裝對象拷貝到新數據庫。
可選的編碼參數允許選擇數據庫編碼,
如果沒有聲明,缺省是所選用的模板數據庫用的編碼。
PARAMETERS 參數¶
- name
-
要創建的數據庫名。 - dbowner
-
數據庫用戶的名字,他將擁有新數據庫,或者是寫 DEFAULT 使用缺省的(也就是執行命令的用戶)。 - dbpath
-
在文件系統裏存儲新數據庫的可選位置;用字串文本聲明。 或者用 DEFAULT 表示使用缺省位置。 - template
-
從哪個模板創建新數據庫,這是模板名。或者用 DEFAULT 使用缺省模板(template1)。 - encoding
-
創建新數據庫用的多字節編碼方法。聲明一個字串文本名字 (比如,'SQL_ASCII'), 或者一個整數編號,或者是 DEFAULT 表示使用缺省編碼。
可選參數可以以任意順序寫,而不僅是上面顯示的順序。
NOTES 注意¶
CREATE DATABASE 不能在一個事務塊裏面執行。 block.
類似 "could not initialize database directory"
這樣的錯誤最有可能是因爲數據目錄的權限不夠,
或者磁盤滿,或者其它文件系統的問題。在使用可選的位置的時候,運行數據庫服務器的用戶必須有訪問該位置的權限。
使用 DROP DATABASE [drop_database(7)]
刪除一個數據庫。
程序 createdb[createdb(1)]
是是這個命令的封裝,提供來方便使用。
在用絕對路徑指定的可選數據庫位置時,有一些安全和數據完整性的問題,
這就是爲什麼缺省時沒有打開這個特性的原因。
參考 ``Managing Databases''
獲取更多的信息。
儘管我們可以通過把某數據庫名聲明爲模板(而非
template1)從非template1數據庫拷貝數據庫,
但是這(還)不是一個通用的
"COPY DATABASE" 功能。
因此,我們建議當做模板使用的數據庫都應該是以只讀方式對待的。
參閱 ``Managing Databases''
獲取更多信息。
EXAMPLES 例子¶
創建一個新的數據庫:
CREATE DATABASE lusiadas;
在另一個地方
~/private_db創建新數據庫,
在 shell
裏執行下面的東西:
shell:
mkdir private_db initlocation ~/private_db
然後在一個 psql 會話裏執行下面的東西:
CREATE DATABASE elsewhere WITH LOCATION '/home/olly/private_db';
COMPATIBILITY 兼容性¶
在 SQL 標準裏沒有 CREATE DATABASE 語句。 數據庫等同於目錄,其創建是由實現決定的。
譯者¶
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
跋¶
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |