pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
要创建数据库,PostgreSQL服务器必须已经启动并正在运行(见第 3.3 节)。
数据库使用查询语言命令 CREATE DATABASE 创建:
CREATE DATABASE name
其中name遵循SQL标识符的通常规则。当前用户自动成为新数据库的所有者。数据库的所有者有权在以后删除它(这也会删除其中的所有对象,即使它们有不同的所有者)。
创建数据库是一项受限操作。关于如何授予该权限,见第 4.2 节。
由于执行CREATE DATABASE命令时必须先连接到数据库服务器,因此还会有一个问题:某个站点上的第一个数据库是如何创建的?第一个数据库总是由initdb命令在初始化数据存储区时创建的(见第 3.2 节)。这个数据库按惯例叫做 template1。因此,要创建第一个“真正”的数据库,你可以连接到 template1。
“template1” 这个名字并非偶然:每当创建一个新数据库时,模板数据库都会被实质性地克隆。这意味着你在 template1 中所做的任何更改,都会传播到后来创建的所有数据库中。这暗示你不应把模板数据库用于实际工作,但如果使用得当,这一特性可以带来便利。更多细节见 第 5.3 节。
为了方便,还可以从 shell 中执行一个程序来创建新数据库,即createdb。
createdb dbname
createdb并没有什么特殊之处。它连接到 template1 数据库并发出CREATE DATABASE命令,和上面描述的完全一样。它在内部使用 psql 程序。createdb 的参考页包含调用细节。注意,不带任何参数的createdb会创建一个与当前用户名同名的数据库,这未必是你想要的。
第 6 章包含关于如何限制谁能连接到给定数据库的信息。
有时你会想为其他人创建数据库,并让他们成为新数据库的拥有者,以便他们自行配置和管理它。要实现这一点,可使用下列命令之一:
CREATE DATABASEdbnameOWNERusername;
在 SQL 环境中使用,或者
createdb -Ousernamedbname
只有超级用户才允许为其他人创建数据库。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。