PostgreSQL是功能最接近Oracle的开源数据库,对标Oracle 的sqlplus工具,在PostgreSQL中也有一个类似的命令行工具,就是plsq,它允许你交互地键入SQL或命令,本节就来讲讲psql的使用方法。
一. 进入psql
psql -h
如下:通过postgres用户进入jimhe这个本地数据库:
psql -h localhost -p 5432 jimhe postgres
如果相应的环境变量都配好了,包括这几个环境变量:
PGDATABASE,PGHOST,PGPORT,PGUSER
配置好之后,就可以直接输入plsq进入psql界面:
进入后可以看到psql的版本是11.2.
通过使用plsql -l 可以查看有哪些数据库。
二.常用的命令
psql的命令大多数都是以\开头的,下面将介绍常用的psql命令
1. \l 查看有哪些数据库
2. \c 用于切换数据库
3. \q 用于退出psql命令行界面
4. \d命令
\d命令的格式如下:
\d [ pattern ]
\d [ pattern ] +
该命令用于显示每个匹配关系(表,视图,索引,序列)的信息
(1)如果\d 后面什么都不带,会显示数据库所有的表,视图,索引,序列。
(2)\d后面跟一个表名,表示显示这个表的结构定义
(3)\d 后跟一个索引,可以显示索引的信息
(4)\d后面跟通配符如“*” 或“?”
(5) \d后面可以跟视图
(6)\d+命令显示比\d更多的信息包括表和列的注释等相关信息
(7) 匹配不同对象类型的\d命令
\dt 显示匹配的表
\di 显示匹配的索引
\ds 显示匹配的序列
\dv 显示匹配的视图
\df 显示匹配的函数
(8)如果想显示SQL已经执行的时间,可以使用\timing on 命令开启计时功能,如果要关闭,使用\timing off关闭计时功能。
(9)列出所有的schema 使用 \dn
(10)显示所有的表空间 使用\db
(11) 列出所有的角色或者用户,使用\du 或者\dg命令。
这两个命令其实是等价的,在PG中角色和用户是一个概念。
(12)显示权限分配情况 \dp或者\z
(13)\i file 执行文件中的命令
一般\i用于执行sql文件的脚本
三.指定字符集编译的命令
当客户端的字符编码与服务器不一致时,可能出现乱码现象,可以使用\encoding命令指定客户端的字符编码。
比如:
\encoding gbk 设置客户端的字符编码为gbk.
\encoding utf8 设置客户端的字符编码为uft8
四. \pset 命令
\pset命令用于设置输出的格式
\pset border 0:表示输出内容无边框
\pset border 1:表示边框只在内部存在
\pset border 2:表示内外都有边框
上面三种风格可以比较明显的看出来,可以根据自己喜好设置。
五. \x命令
使用\x命令,可以把表中的每一行的每列数据都拆分为单行展示,这种适合列比较多,界面显示不全的情况下比较有用。
扩展显示相当于列转行了,把多列显示成多行,更容易查看。
关闭扩展显示可以再输入一次\x 。
六.显示信息命令
\echo命令用于输出一行信息
这个命令和shell中的echo命令功能是一样的,打印一条记录。可以在编写sql脚本中使用,然后调用psql执行时就会打印出来相应的信息。
比如sql文件内容如下:
\echo ----------------------------------------------------
select * from code_test.test limit 10;
\echo -----------------------------------------------------
执行命令后结果日下所示:
七.自动提交功能
在psql中事务是自动提交的,为了控制事务的进行,不希望自动提交事务,可以采用两种方法来进行操作。
第一种方法就是在命令的开始输入begin; 然后在命令的结束位置输入 commit或者rollback, commit表示事务提交,rollback表示事务回滚。
第二种方式就是通过设置 \set AUTOCOMMIT off将自动提交功能关闭。
八 更多的命令
通过使用\? 可以获取到更多的命令的解释。