CREATE DATABASE(7) | SQL Commands | CREATE DATABASE(7) |
CREATE DATABASE - 建立新資料庫
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] dbowner ]
[ LOCATION [=] 'dbpath' ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ] ]
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
裡的本地安裝物件複製到新資料庫。
可選的編碼引數允許選擇資料庫編碼,
如果沒有宣告,預設是所選用的模板資料庫用的編碼。
可選引數可以以任意順序寫,而不僅是上面顯示的順序。
CREATE DATABASE 不能在一個事務塊裡面執行。 block.
類似 "could not initialize database directory"
這樣的錯誤最有可能是因為資料目錄的許可權不夠,
或者磁碟滿,或者其它檔案系統的問題。在使用可選的位置的時候,執行資料庫伺服器的使用者必須有訪問該位置的許可權。
使用 DROP DATABASE [drop_database(7)]
刪除一個數據庫。
程式 createdb[createdb(1)]
是是這個命令的封裝,提供來方便使用。
在用絕對路徑指定的可選資料庫位置時,有一些安全和資料完整性的問題,
這就是為什麼預設時沒有開啟這個特性的原因。
參考 ``Managing Databases''
獲取更多的資訊。
儘管我們可以透過把某資料庫名宣告為模板(而非
template1)從非template1資料庫複製資料庫,
但是這(還)不是一個通用的
"COPY DATABASE" 功能。
因此,我們建議當做模板使用的資料庫都應該是以只讀方式對待的。
參閱 ``Managing Databases''
獲取更多資訊。
建立一個新的資料庫:
CREATE DATABASE lusiadas;
在另一個地方
~/private_db建立新資料庫,
在 shell
裡執行下面的東西:
shell:
mkdir private_db initlocation ~/private_db
CREATE DATABASE elsewhere WITH LOCATION '/home/olly/private_db';
在 SQL 標準裡沒有 CREATE DATABASE 語句。 資料庫等同於目錄,其建立是由實現決定的。
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |