?
This document uses PHP Chinese website manual Release
CREATE DATABASE name [ [ WITH ] [ OWNER [=] user_name ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace ] [ CONNECTION LIMIT [=] connlimit ] ]
CREATE DATABASE創(chuàng)建一個(gè)新PostgreSQL數(shù)據(jù)庫。
要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫,你必須是一個(gè)超級(jí)用戶或者有特殊的CREATEDB權(quán)限。 參閱CREATE USER。
通常,創(chuàng)建者將成為新數(shù)據(jù)庫的管理員。 超級(jí)用戶可以用OWNER子句創(chuàng)建其它用戶所有的數(shù)據(jù)庫。 甚至可以創(chuàng)建沒有特殊權(quán)限的用戶所擁有的數(shù)據(jù)庫。 有CREATEDB權(quán)限的非超級(jí)用戶使用只能創(chuàng)建自己使用的數(shù)據(jù)庫。
缺省時(shí),新數(shù)據(jù)庫將通過克隆標(biāo)準(zhǔn)系統(tǒng)數(shù)據(jù)庫template1來創(chuàng)建。 可以通過TEMPLATE name指定不同的模板。 尤其是,用TEMPLATE template0創(chuàng)建一個(gè)很純凈的、 只包括PostgreSQL預(yù)定義的標(biāo)準(zhǔn)對(duì)象的數(shù)據(jù)庫。 這個(gè)方法可以避免把任何已經(jīng)加入到template1里的本地安裝對(duì)象拷貝到新數(shù)據(jù)庫。
要?jiǎng)?chuàng)建的數(shù)據(jù)庫名字
數(shù)據(jù)庫用戶的名字,他將擁有新數(shù)據(jù)庫, 或者是寫DEFAULT使用缺省用戶(也就是執(zhí)行命令的用戶)。
模板名(從哪個(gè)模板創(chuàng)建新數(shù)據(jù)庫),或者用DEFAULT 使用缺省模板(template1)。
創(chuàng)建新數(shù)據(jù)庫使用的字符編碼??梢允褂梦谋久?例如'SQL_ASCII'、 整數(shù)編號(hào)、DEFAULT(模版數(shù)據(jù)庫的編碼)。 PostgreSQL服務(wù)器支持的字符集 在Section 22.2.1里描述。額外的限制參見下文。
用于新數(shù)據(jù)庫的對(duì)照順序(LC_COLLATE)。 這影響到應(yīng)用到字符串的排序順序,例如:在有ORDER BY的查詢中,以及用于 文本列的索引的順序。在默認(rèn)情況下,使用模板數(shù)據(jù)庫的排序順序。 請(qǐng)看以下附加的限制。
用于新數(shù)據(jù)庫的字符分類(LC_CTYPE)。這影響字符的分類,例如: 小寫、大寫和數(shù)字。默認(rèn)情況下使用模板數(shù)據(jù)庫的字符分類。 請(qǐng)看以下附加的限制。
和新數(shù)據(jù)庫關(guān)聯(lián)的表空間名字, 或者用DEFAULT表示模版數(shù)據(jù)庫的表空間。 這個(gè)表空間將成為在這個(gè)數(shù)據(jù)庫里創(chuàng)建的對(duì)象的缺省表空間。 參閱CREATE TABLESPACE獲取更多信息。
數(shù)據(jù)庫可以接受多少并發(fā)的連接。-1(缺省)意味著沒有限制。
可選參數(shù)可以按任意順序書寫,而不僅僅是上面顯示的順序。
CREATE DATABASE不能在事務(wù)塊里面執(zhí)行。
類似"could not initialize database directory"這樣的錯(cuò)誤 最有可能是因?yàn)閿?shù)據(jù)目錄的權(quán)限不夠或者磁盤滿之類的文件系統(tǒng)問題。
使用DROP DATABASE刪除一個(gè)數(shù)據(jù)庫。
程序createdb是這個(gè)命令的封裝,使用更加方便。
參閱 Section 21.3獲取更多詳細(xì)信息。 盡管可以通過把某數(shù)據(jù)庫名聲明為模板(而非template1), 但是這(還)不是一個(gè)通用的"COPY DATABASE"功能。 主要的限制是在從模版復(fù)制的時(shí)候不允許有其它會(huì)話鏈接到模版數(shù)據(jù)庫上。 如果在開始執(zhí)行CREATE DATABASE的時(shí)候有其它會(huì)話正連接在模版數(shù)據(jù)庫上,那么將會(huì)失??; 否則直到CREATE DATABASE完成之后才允許建立新的會(huì)話連接。 參見Section 21.3獲取更多信息。
為一個(gè)新數(shù)據(jù)庫指定的字符集編碼必須兼容所選擇的區(qū)域環(huán)境設(shè)置 (LC_COLLATE和LC_CTYPE)。若區(qū)域設(shè)置為 C (或相當(dāng)于POSIX),那么所有的編碼都允許, 但是對(duì)于其他的區(qū)域設(shè)置,只有一個(gè)編碼能正常工作。(然而,在Windows系統(tǒng)中, UTF-8編碼可用于任何區(qū)域設(shè)置。)CREATE DATABASE將會(huì)允許超級(jí)用戶 來指定SQL_ASCII編碼而不計(jì)區(qū)域設(shè)置情況,這種做法是不宜采用的而且會(huì)導(dǎo)致 編碼不兼容區(qū)域設(shè)置的數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)庫中時(shí)字符串函數(shù)性能不良,。
編碼和區(qū)域設(shè)置必須匹配模板數(shù)據(jù)庫,除了template0用作模板的時(shí)候。 這是因?yàn)槠渌麛?shù)據(jù)庫可能會(huì)包含不匹配指定編碼的數(shù)據(jù),或者可能包含排序順序受 LC_COLLATE和LC_CTYPE影響的索引。復(fù)制這些數(shù)據(jù)會(huì)導(dǎo)致 數(shù)據(jù)庫被新設(shè)置破壞。然而,template0公認(rèn)是不包含任何會(huì)受 到影響的數(shù)據(jù)或者索引的。
CONNECTION LIMIT選項(xiàng)只是近似地強(qiáng)制;如果兩個(gè)新的連接幾乎同時(shí)發(fā)起, 而只剩下一個(gè)連接"槽位"了,那么很可能兩個(gè)連接都失效。同樣,這個(gè)限制并不強(qiáng)加在超級(jí)用戶上。
創(chuàng)建一個(gè)新數(shù)據(jù)庫:
CREATE DATABASE lusiadas;
創(chuàng)建一個(gè)由用戶salesapp擁有的數(shù)據(jù)庫sales,缺省表空間是 salesspace:
CREATE DATABASE sales OWNER salesapp TABLESPACE salesspace;
創(chuàng)建一個(gè)數(shù)據(jù)庫music,支持ISO-8859-1字符集:
CREATE DATABASE music ENCODING 'LATIN1' TEMPLATE template0;
在這個(gè)例子中,TEMPLATE template0子句只在template1的編碼 不是ISO-8859-1時(shí)被請(qǐng)求。請(qǐng)注意:更改編碼可能也會(huì)需要選擇新的 LC_COLLATE和LC_CTYPE設(shè)置。
在SQL標(biāo)準(zhǔn)里沒有CREATE DATABASE語句。 數(shù)據(jù)庫等同于目錄,其創(chuàng)建是由實(shí)現(xiàn)決定的。