为了创建和删除数据库, 必须先运行PostgreSQL服务器(参阅 Section 16.3).
数据库是用 SQL 命令CREATE DATABASE创建的: CREATE DATABASE:
CREATE DATABASE name;
这里的 name 遵循SQL标识符的一般规则。 当前用户自动成为此新数据库的所有者。同时,以后删除这个数据库也是这个用户的特权(同时还会删除其中的所有对象, 即使那些对象有不同的所有者也这样。)
创建数据库是一个有限制的操作.参阅 Section 17.2 获取如何赋权限的信息。
因为你需要与数据库服务器联接才能执行命令CREATE DATABASE, 那么还有一个问题是任意节点的第一个数据库是怎样创建的? 第一个数据库总是由initdb命令在初始化数据存储区的时候创建的。 (参阅Section 16.2。)这个数据库叫template1而且不能被删除。 因此要创建第一个"真正"的数据库的时候你可以与template1联接.
template1的名字可不是随便取的,当创建一个新的数据库时, 实际上就是克隆了(复制)了模板数据库。 这就意味着你对template1做的任何修改都会传播到所有随后创建的数据库。 这就意味着说你不能把模板数据库用于真正的工作中, 但是如果明智地使用这个特性,那它可以带来许多方便。 更多细节见Section 18.3。(译注:比如增加用户定义函数等等.)
另外,为了更方便一些,你还可以用一个可以在 shell 中执行的程序来创建新数据库,createdb。
createdb dbname
createdb 没变什么魔术,它和template1连接并执行 CREATE DATABASE 命令。 createdb 的手册页包含使用它的细节。尤其是不带任何参数调用 createdb 将以当前用户名为名称创建数据库, 这可能是也可能不是你要的。
注意: Chapter 19 包含有关如何限制某个用户可以连接的数据库的信息。
有时候你想为其他什么人创建一个数据库。那个用户应该成为新数据库的所有者,这样他就可以自己配置和管理这个数据库。要实现这个目标, 使用下列命令中的某一条:
CREATE DATABASE dbname OWNER username;
上面的是在 SQL 环境中,或者是
createdb -O username dbname
要想为其他用户创建一个数据库,你自己必须是数据库的超级用户。