3.2 使用交互式终端psql

psql是PostgreSQL的一个命令行交互式客户端工具,它具有非常丰富的功能,类似于Oracle的命令行工具sqlplus。了解psql工具的使用方法,对于学习PostgreSQL的初学者来说非常重要。

3.2.1 连接数据库

使用psql连接数据库的语法格式如下:

其中,option是连接的相关参数。本节将会介绍一些较常用的连接方法。

1.不指定用户名和密码连接数据库

数据库安装并启动后,通过psql即可登录到数据库,代码如下:

用户使用psql可以直接登录到PostgreSQL。这种方式不需要输入用户名和密码,因为在安装PostgreSQL时,会创建一个与初始化数据库时的操作系统用户同名的数据库用户。

另外,这个用户是数据库的超级用户。如果上述登录方式不指定用户名和密码,则psql会读取环境变量“$PGUSER”的值作为登录用户名。如果没有配置该环境变量,则使用当前操作系统用户名进行登录。

2.使用与操作系统用户名不相同的数据库用户名连接对应的数据库

如果使用与操作系统用户名不相同的数据库用户名连接对应的数据库,则需要指定对应的用户名和数据库名称。

用户名是“hr”,数据库名称是“hr_db”,代码如下:

●-h后面的IP地址(10.47.160.130)是数据库所在的IP地址。

●-p后面的端口(6785)是数据库的监听端口。

●-U后面的参数(hr)是创建的用户名。

●-d后面的参数(hr_db)是创建的数据库名称。

提示:

在PostgreSQL中,pg_hba.conf文件控制允许哪些IP主机访问数据库服务器,这里需要在pg_hba.conf文件中添加“host all all 10.47.160.137/32 trust”,表示允许IP地址为10.47.160.137的主机使用任何用户名连接任数据库时而不需要输入密码。

3.断开psql客户端

断开psql客户端,需要使用“\q”命令(或按“Ctrl+D”组合键),代码如下:

3.2.2 常用命令

本节主要介绍一些常用命令,这些常用命令为我们使用数据库带来了很多便捷。

1.“\d”命令

使用“\d”命令可以查看当前数据库中所有表、视图、序列,代码如下:

如果在“\d”命令后面接表名,则可以查看该表的表定义,代码如下:

2.“\db”命令

使用“\db”命令,可以查看表空间的信息,代码如下:

3.“\dn”命令

使用“\dn”命令,可以查看所有的模式信息,代码如下:

4.“\du”命令或“\dg”命令

使用“\du”命令或“\dg”命令,可以查看数据库中的所有角色或用户,代码如下:

5.“\x”命令

使用“\x”命令,可以设置查询结果的输出模式,代码如下:

6.“\?”命令

使用“\?”命令,可以查询PostgreSQL支持的所有命令,代码如下:

提示:

以反斜线开头的命令也被称为元命令,如上文的“\d”“\db”等。元命令即meta-command,它们由psql自行处理。元命令又被称为斜线命令或反斜线命令。

3.2.3 使用技巧

psql的使用技巧,对PostgreSQL用户来说非常重要。

1.获取元命令对应的SQL代码

psql执行元命令,实质上是转换成对应的SQL语句来执行的。如果要获取这些SQL语句,则需要在psql连接数据库时增加“-E”选项,代码如下:

2.使用上下键翻动历史命令

psql支持使用上下键获取执行过的历史命令,代码如下:

3.自动补全功能

psql的自动补全功能使用起来非常方便。在执行语句时,不需要完全输入数据库对象的名称,使用Tab键可以自动补全。例如,要查询表department,在输入“d”之后按Tab键会自动出现department,再次按Tab键,则会列出所有以d开头的表对象,代码如下:

4.显示SQL语句执行时间

使用“\timing”命令,可以打开显示SQL语句执行时间的开关。再次使用一次“\timing”命令,则关掉该开关,代码如下:

以上显示该select语句的执行时间是0.658 ms。