↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 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
历史版本。 PostgreSQL 8.0 已结束支持。 请参阅 当前版本手册.

18.2. 创建数据库 #

要创建数据库,PostgreSQL服务器必须已经启动并正在运行(见第 16.3 节)。

数据库使用 SQL 命令CREATE DATABASE创建:

CREATE DATABASE name;

其中name遵循SQL标识符的通常规则。当前用户自动成为新数据库的所有者。数据库的所有者有权在以后删除它(这也会删除其中的所有对象,即使它们有不同的所有者)。

创建数据库是一项受限操作。关于如何授予该权限,见第 17.2 节。

由于执行CREATE DATABASE命令时必须先连接到数据库服务器,因此还会有一个问题:某个站点上的第一个数据库是如何创建的?第一个数据库总是由initdb命令在初始化数据存储区时创建的(见第 16.2 节)。这个数据库叫作template1。因此,要创建第一个“真正”的数据库,可以连接到template1。

template1这个名字并非偶然:创建新数据库时,模板数据库本质上会被克隆。这意味着你在模板数据库中所做的任何更改,都会传播到后来创建的所有数据库中。这意味着不应把模板数据库用于实际工作;但如果运用得当,这一特性也可以带来便利。更多细节见第 18.3 节。

为了方便,还可以从 shell 中执行一个程序来创建新数据库,即createdb。

createdb dbname

createdb并没有什么特殊之处。它连接到template1数据库并发出CREATE DATABASE命令,和上面描述的完全一样。关于调用细节见createdb参考页。注意,不带任何参数的createdb会创建一个与当前用户名同名的数据库,而这未必是你想要的。

注意

第 19 章包含关于如何限制谁能连接到给定数据库的信息。

有时你会想为其他人创建数据库,并让他们成为新数据库的拥有者,以便他们自行配置和管理它。要实现这一点,可使用下列命令之一:

CREATE DATABASE dbname OWNER username;

这是在 SQL 环境中使用;或者:

createdb -O username dbname

这是在 shell 中使用。只有超级用户才允许为其他人(即为一个你不是其成员的角色)创建数据库。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.