PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRE版本4.2为基础的对象关系型数据库管理系统(ORDBMS)。 POSTGRES
领先的许多概念只是在非常迟的时候才出现在商业数据库中。它支持大部分 SQL
标准并且提供了许多其他现代特性。并且,因为许可证的灵活,任何人都可以以任何目的免费使用,修改和分发 PostgreSQL,
不管是私用,商用,还是学术研究使用。 安装
在你想开始使用 PostgreSQL
之前,你必须安装它。PostgreSQL
很有可能已经安装到你的节点上了,因为它包含在你的操作系统的发布里,或者是系统管理员已经安装了它。如果是这样的话,那么你应该从操作系统的文档或者你的系统管理员那里获取如何访问
PostgreSQL 的信息。如果你不清楚 PostgreSQL
是否已经安装,或者不知道你能否用它(已经安装的)做自己的实验,那么你就可以自己安装。PostgreSQL 可以由任何非特权用户安装,并不需要超级用户
(root)
的权限。 创建一个数据库
看看你能否访问数据库服务器的第一个例子就是试着创建一个数据库。一台运行着PostgreSQL
服务器可以管理许多数据库。通常我们会为每个项目和每个用户单独使用一个数据库。你的节点管理员可能已经为你创建了可以使用的数据库。他应该已经告诉你这个数据库的名字。如果这样你就可以省略这一步,并且跳到下一节。
要创建一个新的数据库,在我们这个例子里叫
mydb,你可以使用下面的命令:
$ createdb mydb 它应该生成下面这样的响应:
CREATE DATABASE
如果这样,那么这一步就成功了,你就可以忽略本节余下的部分了。
如果你看到类似下面这样的信息
createdb: command not found
那么就是PostgreSQL没有安装好。要么是就根本没装上, 要么是你的搜索路径没有设置正确。尝试用绝对路径调用该命令试试:
$
/usr/local/pgsql/bin/createdb mydb
在你的节点上这个路径可能不一样。和你的管理员联系或者看看安装指导获取正确的位置。
另外一种响应可能是这样:
createdb: could not
connect to database postgres: could not connect to server: No such file or
directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
这意味着该服务器没有启动,或者没有在 createdb
预期的地方启动。同样,你也要检查安装指导或者找管理员。
另外一个响应可能是这样:
createdb: could not connect to
database postgres: FATAL: user “joe” does not exist
在这里提到了你自己的登陆名。如果管理员没有为你创建 PostgreSQL 用户帐号,就会发生这些现象。(PostgreSQL
用户帐号和操作系统用户帐号是不同的) 如果你是管理员,参阅 Chapter 18 获取创建用户帐号的帮助。你需要变成安装 PostgreSQL
的操作系统用户的身份(通常是 postgres)才能创建第一个用户帐号。 也有可能是赋予你的 PostgreSQL
用户名和你的操作系统用户名不同;这种情况下,你需要使用 -U 开关或者使用 PGUSER 环境变量声明你的 PostgreSQL
用户名。
如果你有个数据库用户帐号,但是没有创建数据库所需要的权限,那么你会看到下面的东西:
createdb: database creation
failed: ERROR: permission denied to create database
并非所有用户都经过了创建新数据库的授权。如果
PostgreSQL 拒绝为你创建数据库,那么你需要让节点管理员赋予你创建数据库的权限。出现这种情况时请咨询你的节点管理员。如果你自己安装了
PostgreSQL, 那么你应该以你启动数据库服务器的用户身份登陆然后参考手册完成权限的赋予工作。
你还可以用其它名字创建数据库。PostgreSQL
允许你在一个节点上创建任意数量的数据库。数据库名必须是以字母开头并且小于 63
个字符长。一个方便的做法是创建和你当前用户名同名的数据库。许多工具假设该数据库名为缺省数据库名,所以这样可以节省你的敲键。要创建这样的数据库,只需要键入
$ createdb
如果你再也不想使用你的数据库了,那么你可以删除它。比如,如果你是数据库 mydb
的所有人(创建人),那么你就可以用下面的命令删除它:
$ dropdb mydb
(对于这条命令而言,数据库名不是缺省的用户名。这样你就必须声明它)这个动作物理上将所有与该数据库相关的文件都删除并且不可取消,因此做这件事之前一定要想清楚。 访问数据库
一旦你创建了数据库,你就可以访问它:
运行
PostgreSQL 交互的终端程序, 叫 psql, 它允许你交互地输入,编辑,和执行 SQL 命令。
你可能需要启动 psql,试验本教程中的例子。
你可以用下面的命令为 mydb 数据库激活它:
$ psql mydb
如果你省略了数据库名字,那么它缺省就是你的用户账号名字。在 psql
里,你会看到下面的欢迎信息:
Welcome to psql 8.1, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
mydb⇒
最后一行也可能是
mydb=#
这个提示符意味着你是数据库超级用户,最可能出现在你自己安装了 PostgreSQL
的情况下。作为超级用户意味着你不受访问控制的限制。如果你启动 psql 时碰到了问题,那么回到前面的小节。 诊断 createdb 的方法和诊断 psql
的方法很类似, 如果前者能运行那么后者也应该能运行。 psql 打印出的最后一行是提示符,它表示 psql 正听着你说话,这个时候你就可以敲入 SQL 查询到一个 psql
维护的工作区中。试验一下下面的命令:
mydb⇒ SELECT version();