?
本文檔使用
php中文網(wǎng)手冊(cè) 發(fā)布
數(shù)據(jù)庫(kù)是一些SQL對(duì)象("數(shù)據(jù)庫(kù)對(duì)象")的集合;通常每個(gè)數(shù)據(jù)庫(kù)對(duì)象(表、函數(shù)等) 屬于并且只屬于一個(gè)數(shù)據(jù)庫(kù)。不過(guò)有幾個(gè)系統(tǒng)表(比如pg_database)屬于整個(gè)集群 并且可以在集群之內(nèi)的每個(gè)數(shù)據(jù)庫(kù)里訪問(wèn)。更準(zhǔn)確地說(shuō),一個(gè)數(shù)據(jù)庫(kù)是一個(gè)模式的集合, 而模式包含表、函數(shù)等等。因此完整的層次是這樣的:服務(wù)器→數(shù)據(jù)庫(kù)→模式→表( 或者其它的對(duì)象類(lèi)型,比如函數(shù))。
在與數(shù)據(jù)庫(kù)服務(wù)器連接的時(shí)候,應(yīng)用應(yīng)該在它的連接請(qǐng)求里指明它想連接的數(shù)據(jù)庫(kù)名稱(chēng)。 不允許在一次連接里訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)(不過(guò)沒(méi)有限制一個(gè)應(yīng)用可以建立的連接數(shù)量) 。數(shù)據(jù)庫(kù)是物理上相互隔離的,對(duì)它們的訪問(wèn)控制是在連接層次進(jìn)行的。 如果一個(gè)PostgreSQL服務(wù)器實(shí)例用于承載那些應(yīng)該分隔并且相互之間并不知曉的用戶(hù) 和項(xiàng)目,那么我們建議把它們放在不同的數(shù)據(jù)庫(kù)里。如果項(xiàng)目或者用戶(hù)是相互關(guān)聯(lián)的, 并且可以相互使用對(duì)方的資源,那么應(yīng)該把它們放在同一個(gè)數(shù)據(jù)庫(kù)里,但可能在不同的模式 中。模式只是一個(gè)純粹的邏輯結(jié)構(gòu),誰(shuí)能訪問(wèn)某個(gè)模式由權(quán)限系統(tǒng)控制。 有關(guān)管理模式的更多信息在Section 5.7里。
數(shù)據(jù)庫(kù)是使用 CREATE DATABASE命令創(chuàng)建的(參閱Section 21.2),用 DROP DATABASE command 命令刪除(參閱Section 21.5)。要查看現(xiàn)有數(shù)據(jù)庫(kù)的集合,可以檢查系統(tǒng)表pg_database,比如
SELECT datname FROM pg_database;
psql程序的\l命令和-l命令行選項(xiàng)也可以用來(lái)列出現(xiàn)存的數(shù)據(jù)庫(kù)。
Note: SQL標(biāo)準(zhǔn)把數(shù)據(jù)庫(kù)稱(chēng)作"目錄"(catalog),不過(guò)這兩個(gè)東西實(shí)際上沒(méi)有什么區(qū)別。