返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

19.2. 创建一个数据库

发布于 2019-09-30 03:07:16 字数 1458 浏览 1135 评论 0 收藏 0

为了创建和删除数据库,必须先运行 PostgreSQL 服务器(参阅节16.3)。

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

CREATE DATABASE name;

这里的 name 遵循 SQL 标识符的一般规则。当前角色自动成为此新数据库的所有者。同时,以后删除这个数据库也是这个用户的特权(同时还会删除其中的所有对象,即使那些对象有不同的所有者也这样)。

创建数据库是一个有限制的操作。参阅节18.2获取如何赋予权限的信息。

因为你需要与数据库服务器连接才能执行 CREATE DATABASE 命令,那么还有一个问题是第一个数据库是怎样创建的?第一个数据库总是由 initdb 命令在初始化数据存储区的时候创建的(参阅节16.2)。这个数据库叫 postgres 而且不能被删除。因此要创建第一个"真正"的数据库时你可以与 postgres 连接。

initdb 也会同时创建另一个名为 template1 的数据库。在创建一个新的数据库时,实际上就是克隆(复制)了 template1 数据库。这就意味着你对 template1 所做的任何修改都会传播到所有随后创建的数据库中。因此把模板数据库用于实际工作中并不明智,但是如果有意地使用这个特性,那它可以带来许多方便(译注:比如增加用户定义函数等等)。更多细节见节19.3。

另外,为了方便,你还可以用 createdb 程序来创建新数据库:

createdb dbname

createdb 没变什么魔术,它和 postgres 连接并执行 CREATE DATABASE 命令。createdb 的手册页包含使用它的细节。尤其是不带任何参数调用 createdb 将创建与当前用户名同名的数据库,这可能是也可能不是你想要的。

【注意】章20包含有关如何限制哪些用户可以连接某个特定数据库的信息。

有时候你想为其它人创建一个数据库。那个角色应该成为新数据库的所有者,这样他就可以自己配置和管理这个数据库。要实现这个目标,使用下列命令中的一条:

CREATE DATABASE dbname OWNER rolename;
createdb -O rolename dbname

前者用于 SQL 环境,后者用于命令行。只有数据库的超级用户才能为其它用户创建数据库。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文