psql工具简介
psql是命令行的工具,对应的图形化工具是pgadminIII,psql允许你交互式地输入命令,也可以通过文件的形式执行脚本。
简单使用
直接输入psql即可进入到命令行
1 | psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1)) |
postgresql在安装的时候会自动创建一个与安装用户同名的超级用户,该用户的鉴权是通过操作系统实现的,所以,执行psql的时候不需要输入密码。
1 | psql -l |
安装好后,默认会有一个postgres的数据库,还有两个模板数据库template0和template1,用户在创建数据库时,是默认从模板数据库template1克隆出来的,通常可以定制template1中的内容,以后创建的数据库默认会有这些表和内容。而template0是一个最简化的模板库,创建数据库时,如果指明从此数据库中继承,将会创建出一个最简化的数据库。
常用命令
\l
列出数据库列表
\d
显示匹配的关系,表、视图、索引和序列等
\d+
比\d显示更详细的信息,与表关联的注释以及表中的OID等
dt: 只显示匹配的表
di: 只显示匹配的索引
ds: 只显示匹配的序列
dv: 只显示匹配的视图
df: 只显示匹配的函数
列出sql执行的时间
\timing on
列出所有的schema
\dn
列出所有的表空间
\db
Postgresql中的表空间实际就是一个目录,放在一个表空间的表,就是把表数据放在目录下。
列出所有的角色和用户
\du 或 \dg
du和dg在postgresql中等价,原因在于postgresql中的角色和用户不分。
表权限
\dp 或 \z 显示表权限分配情况
指定字符集
\encoding
pset命令
- pset border 0: 输出内容无边框
- pset border 1: 边框只在内部
- pset border 2: 内外都有边框
\x 拆分单行
\x 命令可以将表中的每一行数据都拆分成单行
执行外部sql脚本
- \i 文件名
- psql -s 文件名
显示信息
\echo
更多命令
\?
使用技巧和注意事项
自动补全
按两次tab键可以自动补全命令
自动提交
psql中的事物是自动提交的,想要不自动提交的方式:
- 运行begin命令 然后执行dml语句,再commit或rollback
- 直接使用 \set AUTOCOMMIT off 关掉自动提交
在psql中获取实际执行的sql
在启动psql的时候添加-E 参数就可以把psql中各种以\开头的命令实际执行的sql打印出来。
如果想在psql中显示某一条命令实际执行的sql,显示完又想关闭这个功能,则使用:
\set ECHO_HIDDEN on|off