1、psql介绍
psql是PostgreSQL中的一个命令行交互式客户端工具,类似Oracle中的命令行工具sqlplus,但它使用起来远比sqlplus方便。它允许你交互地键入SQL或命令,然后把它们发出给PostgreSQL服务器,再显示SQL或命令的结果。而且,输人的内容还可以来自于一个文件。此外,它还提供了一些元命令和多种类似shell的特性来实现书写脚本,以及对大量任务的自动化工作。
2、psql简单使用
2.1 psql连接数据库方法
psql -h <hostname or ip> -P <端口> [数据库名称] [用户名称]
这些连接参数也可以用环境变量指定,例如
export PGDATABASE=testdbexport PGHOST=192.168.43.128export PGPORT=6432export PGUSER=postgres
2.2 使用psql –l查看有哪些数据库

同时也可以在psql命令行中使用\l查看数据库

3、psql常用命令
3.1 \d命令
该命令将显示每个匹配关系(表、视图、索引、序列)的信息,包括对象所有的列、它们的类型、表空间( 如果不是默认的)和任何特殊属性(诸如NOT NULL或默认值等)等。与唯一约束相关的索引、规则、约束、触发器也同样会显示出来。如果关系是一个视图,还会显示视图的定义。
匹配不同对象类型的\d命令
如果想只显示匹配的表,可以使用\dt命令。
如果想只显示索引,可以使用\di命令。
如果想只显示序列,可以使用\ds命令。
如果想只显示视图,可以使用\dv命令。
如果想显示函数,可以使用\df命令。
\d+ 命令
该命令将显示比\d命令更详细的信息,除了前面介绍的那些,它还会显示任何与表列关联的注释,以及表中出现的OID。
\timing
显示SQL的执行时间
\dn
显示所有有schema
\db
显示所有的表空间
\du 或\dg
显示所有的角色或用户
\dp 或 \z
显示表的权限分配情况
3.2 \pset命令
\pset命令用于设置输出的格式,具体如下。
\pset border 0:表示输出内容无边框
\pset border 1:表示边框只在内部
\pset border2:表示内外都有边框

3.3 \x命令
使用\x命令,可以把表中每一行的每列数据都拆分为单行展示

3.4执行存储在外部文件中的SQL命令
命令\i <文件名>执行存储在外部文件中的sql 语句或命令

也可以用psql –f <文件名> 执行

3.5显示信息的命令
\echo命令用于输出一-行信息

3.6 更多的使用用\?来查看
4、psql使用技巧和注意事项
4.1 历史命令和补全功能
使用上下键把以前使用过的命令或SQL语句调出来,连续按两个tab键表示把命令补全
4.2 事务的自动提交
在psql中事务是自动提交的。比方说,执行完一条delete或update语句后,事务就自动提交了,如果不想自动提交,方法有两种。
方法一:运行begin;命令,然后执行dml语句,最后再执行commit或rollback语句。

没有commit,断开连接再重连值没有修改

方法二:直接使用psql中的命令关闭自动提交的功能,需要手工commit
\set AUTOCOMMIT off
注意,这个命令中的“AUTOCOMMIT"是大写的,不能使用小写。

4.3 得到psql中命令实际执行的sql
如果在启动psql的命令行中加”-E”参数,就可以把psql中各种以“\”开头的命令执行的实际SQL打印出来

在已运行的psql中关闭这个功能,使用“\set ECHO_HIDDEN on |off"命令





