psql的常用命令

\h 命令

作用:查看各种SQL语句的语法,如 \h create user:查看创建用户的SQL语法,示例:
postgres=# \h create user
Command: CREATE USER
Description: define a new database role
Syntax:
CREATE USER name [ [ WITH ] option [ … ] ]
where option can be:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD ‘password’ | PASSWORD NULL
| VALID UNTIL ‘timestamp’
| IN ROLE role_name [, …]
| IN GROUP role_name [, …]
| ROLE role_name [, …]
| ADMIN role_name [, …]
| USER role_name [, …]
| SYSID uid

\d 命令

\d

作用:显示当前数据库中的所有表

\d [ pattern ]

作用:显示每个匹配“pattern”(表、视图、索引、序列)的信息,包括对象中所有的列、各列的数据类型、表空间(如果不是默认的)和所有特殊属性(诸如“NOT NULL”或默认值等)等

\d [ pattern ]+

作用:显示比 \d [ pattern ] 命令的执行结果更详细的信息,除了前面介绍的信息,还会显示所有与表的列关联的注释,以及表中出现的OID

另:“\d”命令后面的表名或索引名中也可以使用通配符,如“*”或“?”等,示例如下:
osdba=# \d x?
Table “public.x1”
Column | Type | Modifiers
--------±----------------------±----------
id | integer | not null
name | character varying(20) |
Indexes:
“x1_pkey” PRIMARY KEY, btree (id)

Table “public.x2”
Column | Type | Modifiers
--------±----------------------±----------
id | integer | not null
name | character varying(20) |
Indexes:
“x2_pkey” PRIMARY KEY, btree (id)

osdba=# \d t*
Table “public.t”
Column | Type | Modifiers
--------±------------------------±----------
id | integer | not null
name | character varying(4000) |
Indexes:
“t_pkey” PRIMARY KEY, btree (id)

Table “public.t2”
Column | Type | Modifiers
--------±--------±----------
id | integer | not null
id2 | integer |
id3 | integer |
Indexes:
“t2_pkey” PRIMARY KEY, btree (id)

匹配不同对象类型的“\d”命令:

\dt 只显示匹配的表
\di 只显示索引
\ds 只显示序列
\dv 只显示视图
\df 只显示函数
\dn 显示所有的schema
\db 显示所有的表空间
\du\dg 显示数据库中的所有角色或用户
\dp 表名\z 表名 显示表的权限分配情况

\timing 命令

作用:显示执行SQL语句的时间。示例如下:
osdba=# \timing on
Timing is on.
osdba=# select count() from t;*
count
100000
(1 row)
Time: 3486.471 ms

\encoding 字符集 命令

作用:指定客户端的字符编码,如使用“\encoding gbk;”命令设置客户端的字符编码为“gbk”;使用“\encoding utf8;”命令设置客户端的字符编码为“utf8”

\pset 命令

作用:格式化输出,默认情况下,psql中执行SQL语句后输出的内容是只有内边框的表格:

osdba=# select * from class;
no | class_name
----±-----------
1 | 初二(1)班
2 | 初二(2)班
3 | 初二(3)班
4 | 初二(4)班
(4 rows)

“\pset”命令设置边框的用法:

\pset border 0:表示输出内容无边框
\pset border 1:表示输出内容只有内边框
\pset border 2:表示输出内容内外都有边框
:psql中默认的输出格式是“\pset border 1”

\pset format unaligned

作用:把命令的结果输出为其他程序可以读取的文件,如以逗号分隔或以Tab分隔的文本文件(默认分隔符是“|”),示例如下:

osdba=# \pset format unaligned
Output format is unaligned.
osdba=# select * from class;
no|class_name
1|初二(1)班
2|初二(2)班
3|初二(3)班
4|初二(4)班
(4 rows)

\pset fieldsep 分隔符

作用:设置分隔符,如改成Tab分隔符的方法如下:

osdba=# \pset fieldsep ‘\t’
Field separator is " ".
osdba=# select * from class;
no class_name
1 初二(1)班
2 初二(2)班
3 初二(3)班
4 初二(4)班
(4 rows)

\o 文件名

作用:把SQL命令输出到一个文件中,示例如下:

osdba=# \pset format unaligned
Output format is unaligned.
osdba=# \o 111.txt
osdba=# select * from class;
osdba=#
这时,我们得到的文件“111.txt”的内容如下:
osdba-mac:~ osdba$ cat 111.txt
no|class_name
1|初二(1)班
2|初二(2)班
3|初二(3)班
4|初二(4)班
(4 rows)

\t

作用:很多时候我们也不需要列头数据如“no|class_name”,这时就可以用“\t”命令来删除这些信息(表头):

osdba=# \pset format unaligned
Output format is unaligned.
osdba=# \t
Tuples only is on.
osdba=# \o 111.txt
osdba=# select * from class;
得到的文件“111.txt”的内容如下:
osdba-mac:~ osdba$ cat 111.txt
1|初二(1)班
2|初二(2)班
3|初二(3)班
4|初二(4)班

\x 命令

作用:把按行展示的数据变成按列展示

\i 文件名 命令

作用:用于执行存储在外部文件中的SQL语句或命令

psql -f 文件名 命令

作用:执行SQL脚本文件中的命令

\e 命令

作用:编辑文件、函数或视图定义

\e 文件名

作用:编辑文件,这个文件必须存在,否则会报错
:当“\e”命令不带任何参数时会生成一个临时文件,前面执行的最后一条命令会出现在临时文件中,当编辑完成后退出编辑器并回到psql中时会立即执行文件中的命令,SQL语句的内容在psql中是看不到的

\ef 函数名

作用:编辑函数,当编辑完成后按“wq:”保存并退出,再输入“;”就会执行所创建函数的SQL语句
:如果“\ef”后面不跟任何参数,则会出现一个编辑函数的模板

\ev 视图名

作用:编辑视图,编辑完成后,保存并退出,再输入分号“;”就会执行所创建视图的SQL语句
:后面不跟任何参数时,在Vi中会出现一个创建视图的模板

\reset 命令

作用:退出Vi后,要在psql中输入“\reset”来清除psql的命令缓冲区,防止误执行创建函数和视图的SQL语句

\echo 命令

作用:输出信息

? 命令

作用:显示其他命令

历史命令与补全功能

作用:可以使用上下方向键把以前使用过的命令或SQL语句调出来,连续单击两次Tab键表示把命令补全或给出输入提示

自动提交技巧

需要特别注意的是,在psql中事务是自动提交的,比如,执行完一条DELETE或UPDATE语句后,事务就会自动提交,如果不想让事务自动提交,方法有两种。
方法一:运行“begin;”命令,然后执行DML语句,最后再执行commitrollback语句(手动控制事务)
方法二:直接使用psql中的命令( \set AUTOCOMMIT off )关闭自动提交功能
:这个命令中的“AUTOCOMMIT”是大写的,不能使用小写,如果使用小写,虽不会报错,但会导致关闭自动提交的操作无效

psql -E 命令

作用:把psql中各种以“\”开头的命令执行的实际SQL语句打印出来
如果在已运行的psql中显示了某个命令实际执行的SQL语句后又想关闭此功能,该怎么办?这时可以使用“\set ECHO_HIDDEN on|off”命令

你可能感兴趣的:(数据库,sql,postgresql)