目录
psql是PostgreSQL中的一个命令行交互式客户端工具,类似Oracle中的命令行工具sqlplus,但它使用起来远比 sqlplus方便。它允许你交互地键入SQL或命令,然后把它们发出给PostgreSQL服务器,再显示SQL或命令的结果。而且,输入的内容还可以来自于一个文件。此外,它还提供了一些元命令和多种类似shell的特性来实现书写脚本,以及对大量任务的自动化工作。
当然,初学者也可以使用PostgreSQL中图形化的客户端工具(如pgadminIII)来实现上述功能。但如果你掌握了psql的使用方法,将会体会到它的方便之处。因为 psql是一个字符界面的工具,没有图形化工具使用上的一些限制。psql 与 pgAdminIII 之间的关系类似于vi与某些图形化工具的关系,在记住psql中的一些命令后,你会发现这个小工具更快捷。
如果已按前面的步骤把数据库建好了,可以直接输入psql进入到命令行下:
- osdba@osdba-laptop:~$ psql
- psql ( 9.0. 3)
- Type "help" for help.
- osdba=#
进人后会显示psql的版本,然后出现提示符。
提示:大家可能奇怪为什么不需要输入用户名和密码?安装PostgreSQL 的数据库时,会建立一个与初始化数据库时的操作系统用户同名的数据库用户,同时,这个用户是数据库的超级用户,在这个OS 用户下,登录数据库时执行的是操作系统认证,所以不需要用户名和密码,当然也可以通过修改pg_hba.conf 文件来要求输入密码。
这时就可以在提示符下输人命令和SQL了,psql的命令都是以斜杠“\”开头的。使用psql -l可以查看有哪些数据库:
安装好后,默认会有一个叫postgres的数据库,还有两个模板数据库template0和template1。当用户在建数据库时,默认是从模板数据库template1克隆出来的,所以通常可以定制templatel 数据库中的内容,如往 templatel中添加一些表和函数,这样后续创建的数据库就会继承template1中的内容,也会拥有这些表和函数。而 template0是一个最简化的模板库,创建数据库时,如果明确指定从此数据库中继承,将创建出一个最简化的数据库。
也可以在psql命令行中使用“”查看数据库,示例如下:
\d命令的格式如下:
- \d [ pattern ]
- \d [ pattern ] +
该命令将显示每个匹配关系(表、视图、索引、序列)的信息,包括对象所有的列、它们的类型、表空间(如果不是默认的)和任何特殊属性(诸如NOT NULL或默认值等)等。与唯一约束相关的索引、规则、约束、触发器也同样会显示出来。如果关系是一个视图,还会显示视图的定义(“匹配模式”将在下面定义)。
当客户端的字符编码与服务器的不一样时,可能会显示乱码,可以使用\encoding命令指定客户端的字符编码,如使用\encoding gbk;命令设置客户端的字符编码为gbk,使用\encoding utf8;命令设置客户端的字符编码为utf8。
\pset命令用于设置输出的格式,具体如下。
- \pset border 0:表示输出内容无边框。
-
- \pset border 1:表示边框只在内部。
-
- \pset border 2:表示内外都有边框。
使用\x命令,可以把表中每一行的每列数据都拆分为单行展示。
命令\i<文件名>执行存储在外部文件中的sql语句或命令。
lecho命令用于输出一行信息,示例如下:
- osdba=# \echo hello word
- hello word
更多的命令可以用\?来显示。