W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
CREATE DATABASE — 創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)
CREATE DATABASEname [ [ WITH ] [ OWNER [=] user_name ] [ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ LOCALE [=] locale ]
[ LC_COLLATE [=] lc_collate ]
[ LC_CTYPE [=] lc_ctype ]
[ TABLESPACE [=] tablespace_name ]
[ ALLOW_CONNECTIONS [=] allowconn ]
[ CONNECTION LIMIT [=] connlimit ]
[ IS_TEMPLATE [=] istemplate ] ]
CREATE DATABASE
創(chuàng)建一個(gè)新的PostgreSQL數(shù)據(jù)庫(kù)。
要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù),你必須是一個(gè)超級(jí)用戶或者具有特殊的CREATEDB
特權(quán)。見CREATE ROLE。
默認(rèn)情況下,新數(shù)據(jù)庫(kù)將通過(guò)克隆標(biāo)準(zhǔn)系統(tǒng)數(shù)據(jù)庫(kù)template1
被創(chuàng)建??梢酝ㄟ^(guò)寫TEMPLATE
指定一個(gè)不同的模板。特別地,通過(guò)寫name
TEMPLATE template0
你可以創(chuàng)建一個(gè)原始的數(shù)據(jù)庫(kù)(其中沒有用戶定義的對(duì)象存在并且系統(tǒng)對(duì)象沒有被更改),它將只包含你的PostgreSQL版本所預(yù)定義的標(biāo)準(zhǔn)對(duì)象。如果你希望避免拷貝任何可能被加入到template1
中的本地安裝對(duì)象,這將有所幫助。
name
要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名。
user_name
將擁有新數(shù)據(jù)庫(kù)的用戶的角色名,或者用DEFAULT
來(lái)使用默認(rèn)值(即,執(zhí)行該命令的用戶)。要?jiǎng)?chuàng)建一個(gè)被另一個(gè)角色擁有的數(shù)據(jù)庫(kù),你必須是該角色的一個(gè)直接或間接成員,或者是一個(gè)超級(jí)用戶。
template
要從其創(chuàng)建新數(shù)據(jù)庫(kù)的模板名稱,或者用DEFAULT
來(lái)使用默認(rèn)模板(template1
)。
encoding
要在新數(shù)據(jù)庫(kù)中使用的字符集編碼。指定一個(gè)字符串常量(例如'SQL_ASCII'
),或者一個(gè)整數(shù)編碼編號(hào),或者DEFAULT
來(lái)使用默認(rèn)的編碼(即,模板數(shù)據(jù)庫(kù)的編碼)。PostgreSQL服務(wù)器所支持的字符集在第 23.3.1 節(jié)中描述。附加限制見下文。
locale
這是一個(gè)同時(shí)設(shè)置LC_COLLATE
和LC_CTYPE
的快捷方式。 如果指定此參數(shù),您不能指定這些參數(shù)中的任何一個(gè)。
其他語(yǔ)言環(huán)境設(shè)置 lc_messages, lc_monetary, lc_numeric,
and lc_time不是每個(gè)數(shù)據(jù)庫(kù)固定的, 也不是由該命令設(shè)置的。 如果要將它們?cè)O(shè)置為特定數(shù)據(jù)庫(kù)的默認(rèn)值,則可以使用 ALTER DATABASE... SET
.
lc_collate
要在新數(shù)據(jù)庫(kù)中使用的排序規(guī)則順序(LC_COLLATE
)。這會(huì)影響應(yīng)用到字符串的排序順序,例如在帶 ORDER BY 的查詢中,以及文本列上索引所使用的順序。默認(rèn)是使用模板數(shù)據(jù)庫(kù)的排序規(guī)則順序。附加限制見下文。
lc_ctype
要在新數(shù)據(jù)庫(kù)中使用的字符分類(LC_CTYPE
)。這會(huì)影響字符的類別,如小寫、大寫和數(shù)字。默認(rèn)是使用模板數(shù)據(jù)庫(kù)的字符分類。附加限制見下文。
tablespace_name
將與新數(shù)據(jù)庫(kù)相關(guān)聯(lián)的表空間名稱,或者DEFAULT
來(lái)使用模板數(shù)據(jù)庫(kù)的表空間。這個(gè)表空間將是在這個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建的對(duì)象的表空間。詳見CREATE TABLESPACE。
allowconn
如果為假,則沒有人能連接到這個(gè)數(shù)據(jù)庫(kù)。默認(rèn)為真,表示允許連接(除了 被其他機(jī)制約束以外,例如GRANT
/REVOKE CONNECT
)。
connlimit
這個(gè)數(shù)據(jù)庫(kù)允許多少并發(fā)連接。-1 (默認(rèn)值)表示沒有限制。
istemplate
如果為真,則任何具有CREATEDB
特權(quán)的用戶都可以從 這個(gè)數(shù)據(jù)庫(kù)克隆。如果為假(默認(rèn)),則只有超級(jí)用戶或者該數(shù)據(jù)庫(kù)的擁有者 可以克隆它。
可選的參數(shù)可以被寫成任何順序,不用按照上面說(shuō)明的順序。
CREATE DATABASE
不能在一個(gè)事務(wù)塊內(nèi)被執(zhí)行。
帶有一行“不能初始化數(shù)據(jù)庫(kù)目錄”的錯(cuò)誤大部分與在數(shù)據(jù)目錄上權(quán)限不足、磁盤滿或其他文件系統(tǒng)問(wèn)題有關(guān)。
使用DROP DATABASE移除一個(gè)數(shù)據(jù)庫(kù)。
程序createdb是這個(gè)命令的一個(gè)包裝器程序,為了使用方便而提供。
數(shù)據(jù)庫(kù)層面的配置參數(shù)(參見ALTER DATABASE)和 數(shù)據(jù)庫(kù)級(jí)權(quán)限(參見GRANT)不會(huì)從模板數(shù)據(jù)庫(kù)中復(fù)制。
盡管可以通過(guò)指定一個(gè)數(shù)據(jù)庫(kù)作為模板來(lái)從其中而不是template1
復(fù)制,這(還)不是“COPY DATABASE
”功能的一般目的。主要的限制是在模板數(shù)據(jù)庫(kù)被拷貝期間其他會(huì)話不能連接到它。如果CREATE DATABASE
啟動(dòng)時(shí)還存在任何其他連接,它將失敗。否則,到模板數(shù)據(jù)庫(kù)的新連接將被擋在外面直到
CREATE DATABASE
完成。詳見第 22.3 節(jié)。
為新數(shù)據(jù)庫(kù)指定的字符集編碼必須與選定的區(qū)域設(shè)置(LC_COLLATE
和LC_CTYPE
)相兼容。如果區(qū)域是C
(或者等效的POSIX
),那么所有編碼都被允許,但是對(duì)于其他區(qū)域設(shè)置只有一種編碼能正確工作(不過(guò),在 Windows 上 UTF-8 編碼能夠與任何區(qū)域一起使用)。
CREATE DATABASE
將允許超級(jí)用戶指定SQL_ASCII
編碼而不管區(qū)域設(shè)置,但是這種選擇已被廢棄并且可能在數(shù)據(jù)與數(shù)據(jù)庫(kù)中存儲(chǔ)的區(qū)域不是編碼兼容時(shí)讓字符串函數(shù)行為失當(dāng)。
編碼和區(qū)域設(shè)置必須匹配模板數(shù)據(jù)的編碼和區(qū)域,除非template0
被用作模板。這是因?yàn)槠渌麛?shù)據(jù)庫(kù)可能包含不匹配指定編碼的數(shù)據(jù),或者可能包含排序順序受LC_COLLATE
和LC_CTYPE
影響的索引??截愡@種數(shù)據(jù)將導(dǎo)致一個(gè)由于該新設(shè)置損壞的數(shù)據(jù)庫(kù)。不過(guò),template0
是不會(huì)含有任何可能被影響的數(shù)據(jù)或索引的。
CONNECTION LIMIT
選項(xiàng)大概是唯一會(huì)被強(qiáng)制的,如果兩個(gè)新會(huì)話在大約同一時(shí)間開始并且那時(shí)該數(shù)據(jù)庫(kù)只剩有一個(gè)連接“槽”,可能兩者都會(huì)失敗。還有,該限制對(duì)超級(jí)用戶或后臺(tái)工作進(jìn)程無(wú)效。
要?jiǎng)?chuàng)建一個(gè)新數(shù)據(jù)庫(kù):
CREATE DATABASE lusiadas;
要在一個(gè)默認(rèn)表空間salesspace
中創(chuàng)建一個(gè)被用戶salesapp
擁有的新數(shù)據(jù)庫(kù)sales
:
CREATE DATABASE sales OWNER salesapp TABLESPACE salesspace;
要用不同的語(yǔ)言環(huán)境創(chuàng)建數(shù)據(jù)庫(kù)music
:
CREATE DATABASE music
LOCALE 'sv_SE.utf8'
TEMPLATE template0;
在這個(gè)例子中,如果指定的語(yǔ)言環(huán)境與template1
中的語(yǔ)言環(huán)境不同, 則需要TEMPLATE template0
子句。(如果不是,則明確指定區(qū)域設(shè)置是多余的。)
要用不同的語(yǔ)言環(huán)境和不同的字符集編碼創(chuàng)建數(shù)據(jù)庫(kù)music2
:
CREATE DATABASE music2
LOCALE 'sv_SE.iso885915'
ENCODING LATIN9
TEMPLATE template0;
指定的區(qū)域設(shè)置和編碼設(shè)置必須匹配,否則會(huì)報(bào)告錯(cuò)誤。
請(qǐng)注意,區(qū)域名稱是特定于操作系統(tǒng)的, 因此上述命令可能無(wú)法在任何地方以相同的方式工作。
在 SQL 標(biāo)準(zhǔn)中沒有CREATE DATABASE
語(yǔ)句。數(shù)據(jù)庫(kù)等效于目錄,而目錄的創(chuàng)建由實(shí)現(xiàn)定義。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: