2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

22.2. 建立資料庫 #

要建立資料庫,PostgreSQL 伺服器必須正在執行(參見 第 18.3 節)。

資料庫是使用 SQL 命令 CREATE DATABASE 建立的

CREATE DATABASE name;

其中 name 遵循識別符號的常規規則。SQL當前角色自動成為新資料庫的所有者。資料庫所有者有權在以後刪除該資料庫(這將刪除其中所有物件,即使它們有其他所有者)。

建立資料庫是一項受限操作。有關如何授予許可權的資訊,請參見 第 21.2 節

由於您需要連線到資料庫伺服器才能執行 CREATE DATABASE 命令,因此存在一個問題:任何站點的第一個資料庫是如何建立的?第一個資料庫總是由 initdb 命令在資料儲存區初始化時建立。(參見 第 18.2 節。)這個資料庫稱為 postgres 因此,要建立第一個普通資料庫,您可以連線到 postgres

在資料庫叢集初始化期間,還會建立另外兩個資料庫:template1template0 每當在叢集中建立新資料庫時,template1 實際上都會被克隆。這意味著您在 template1 中進行的任何更改都會傳播到所有後續建立的資料庫。因此,除非您希望這些物件傳播到每個新建立的資料庫,否則請避免在 template1 中建立物件。template0 被設計為 template1 原始內容的乾淨副本。當需要建立沒有站點的本地新增內容的資料庫時,可以克隆 template0 而不是 template1。有關更多詳細資訊,請參見 第 22.3 節

為了方便起見,還有一個可以在 shell 中執行的程式來建立新資料庫,即 createdb

createdb dbname

createdb 並沒有做什麼神奇的事情。它連線到 postgres 資料庫併發出 CREATE DATABASE 命令,這與上面描述的完全相同。createdb 參考頁包含呼叫詳情。請注意,不帶任何引數的 createdb 將建立一個以當前使用者名稱命名的資料庫。

注意

關於如何限制誰可以連線到特定資料庫的資訊,請參見 第 20 章

有時您想為別人建立一個數據庫,並讓他們成為新資料庫的所有者,以便他們可以自己配置和管理。要實現這一點,請在 SQL 環境中使用以下命令之一

CREATE DATABASE dbname OWNER rolename;

或在 shell 中使用

createdb -O rolename dbname

。只有超級使用者才能為別人(即,為非您所屬角色的角色)建立資料庫。

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。