PHP实战中知识总结 / PgSQL - pgsql常用命令
pgsql命令行常用命令
命令 | 解释 |
---|---|
\c dbname | 切换数据库 |
\copyright | 显示 PostgreSQL 的使用和发行条款 |
\conninfo | 显示当前数据库和连接信息 |
\d[S+] [pattern] | 每一个匹配pattern的关系(表、视图、物化视图、索引、序列或者外部表)或者组合类型,显示所有的列、它们的类型、表空间等信息 |
\d[Eimst][S+] | E、i、m、s、t和v分别对应着外部表、索引、物化视图、序列、表和视图 |
\da[S] [pattern] | 列出聚集函数,以及它们的返回类型和它们所操作的数据类型。如果指定了pattern,只显示名称匹配该模式的聚集。默认情况下只会显示用户创建的对象,提供一个模式或者S修饰符可以把系统对象包括在内 |
\dA[+] [pattern] | 列出访问方法(索引)。如果指定了pattern,只显示名称匹配该模式的访问方法。如果在命令名称后面追加+,则与访问方法相关的处理器函数和描述也会和访问方法本身一起被列出 |
\db[+] [pattern] | 列出表空间。如果指定了pattern,只显示名称匹配该模式的表空间。如果在命令名称后面追加+,则与表空间相关的选项、磁盘上的尺寸、权限以及描述也会和表空间本身一起被列出 |
\dc[S+] [pattern] | 列出字符集编码之间的转换。如果指定了pattern,只列出名称匹配该模式的转换。默认情况下只会显示用户创建的对象,提供一个模式或者S修饰符可以把系统对象包括在内。如果在命令名称后面追加+,则每一个对象相关的描述也会被列出 |
\dC[+] [pattern] | 列出类型转换。如果指定了pattern,只列出源类型和目标类型匹配该模式的转换。如果在命令名称后面追加+,则每一个对象相关的描述也会被列出 |
\dd[S] [pattern] | 显示约束、操作符类、操作符族、规则以及触发器类型对象的描 |
\dD[S+] [pattern] | 列出域。如果指定了pattern,只有名称匹配该模式的域会被显示。默认情况下,只有用户创建的对象会被显示 |
\ddp [pattern] | 列出默认的访问特权设置。对那些默认特权设置已经被改变得与内建默认值不同的角色(以及模式,如果适用),为每一个角色(以及模式)显示一项 |
\des[+] [pattern] | 列出外部服务器 |
\det[+] [pattern] | 列出外部表 |
\deu[+] [pattern] | 列出用户映射 |
\dew[+] [pattern] | 列出外部数据包装器 |
\df[anptwS+] [pattern] | 列出函数,以及它们的结果数据类型、参数数据类型和函数类型,函数类型被分为“agg”(聚集)、“normal”、“procedure”、“trigger”以及“window”。如果要只显示指定类型的函数,可以在该命令上增加相应的字母a、n、p、t或者w |
\dF[+] [pattern] | 列出文本搜索配置 |
\dFd[+] [pattern] | 列出文本搜索字典 |
\dFp[+] [pattern] | 列出文本搜索解析器 |
\dFt[+] [pattern] | 列出文本搜索模板 |
\dg[S+] [pattern] | 列出数据库角色(因为“用户”和“组”的概念已经被统一成“角色”,这个命令现在等价于\du)。 |
\dl | 这是\lo_list的一个别名,它显示大对象的列表 |
\dL[S+] [pattern] | 列出模式(名字空间) |
\do[S+] [pattern] | 列出操作符及其操作数和结果类型 |
\dO[S+] [pattern] | 列出排序规则 |
\dp [pattern] | 列出表、视图和序列,包括与它们相关的访问特权 |
\dP[itn+] [pattern] | 列出分区关系。修改符t(表)和i(索引)可以追加到命令中,筛选要列出的关系类型。默认会列出分区表和索引 |
\drds [role-pattern[database-pattern]] | 列出已定义的配置设置。这些设置可以是针对角色的、针对数据库的或者同时针对两者的。role-pattern和database-pattern分别被用来选择要列出的角色和数据库。如果省略它们或者指定了*,则会列出所有设置,分别会包括针对角色和针对数据库的设置 |
\dRp[+] [pattern] | 列出复制的publication |
\dRs[+] [pattern] | 列出复制的订阅 |
\dT[S+] [pattern] | 列出数据类型,默认情况下只会显示用户创建的对象,提供一个模式或者S修饰符可以把系统对象包括在内 |
\du[S+] [pattern] | 列出数据库角色 |
\dx[+] [pattern] | 列出已安装的扩展 |
\dy[+] [pattern] | 列出事件触发器 |
\encoding [字元编码名称] | 显示或设定用户端字元编码 |
\echo [字符串] | 将字符串标准输出 |
\e 或 \edit [filename] [line_number] | 1. 这个命令会以一个`CREATE OR REPLACE FUNCTION`或`CREATE OR REPLACE PROCEDURE`命令的形式取出并且编辑指定函数或过程的定义。 2. 在编辑器退出后,更新过的命令将在查询缓冲区中等待,可以键入分号或者`\g`把它发出,也可以用`\r`取消。 3. 目标函数可以单独用名称或者用名称和参数(例如`foo(integer, text)`)来指定。 4. 如果没有指定函数,将会给出一个空白的`CREATE FUNCTION`模板来编辑。 5. 如果指定了一个行号,psql将把游标定位在该函数体的指定行上(注意函数体通常不是开始于文件的第一行) |
\ev [view_name [line_number]] | 1. 这个命令会以一个`CREATE OR REPLACE VIEW`的形式取出并且编辑指定函数的定义。在编辑器退出后,更新过的命令将在查询缓冲区中等待,可以键入分号或者`\g`把它发出,也可以用`\r`取消。 2. 如果没有指定函数,将会给出一个空白的`CREATE VIEW`模板来编辑。 3. 如果指定了一个行号,psql将把游标定位在该视图定义的指定行上。 |
\h or \help [command] | 给出指定SQL命令的语法帮助。如果没有指定`command`,则psql会列出可以显示语法帮助的所有命令。如果`command`是一个星号(*),则会显示所有SQL命令的语法帮助 |
\i or \include filename | 从文件`filename`读取输入并且把它当作从键盘输入的命令来执行 |
\ir or \include_relative filename | `\ir`命令类似于`\i`,但是以不同的方式处理相对路径文件名。在交互模式中执行时,这两个命令的行为相同。不过,当被从脚本中调用时,`\ir`相对于脚本所在的目录而不是根据当前工作目录来解释文件名 |
\l [+] [pattern] | 列出服务器中的数据库并且显示它们的名称、拥有者、字符集编码以及访问特权。如果指定了`pattern`,则只列出名称匹配该模式的数据库。如果向命令名称追加`+`,则还会显示数据库的尺寸、默认表空间以及描述(尺寸信息只对当前用户能连接的数据库可用) |
\password [username] | 更改指定用户(默认情况下是当前用户)的口令。这个命令会提示要求输入新口令、对口令加密然后把加密后的口令作为一个`ALTER ROLE`命令发送到服务器。这确保新口令不会以明文的形式出现在命令历史、服务器日志或者其他地方 |
\q or \quit | 退出psql程序。在一个脚本文件中,只有该脚本的执行会被终止 |
\s [filename] | 打印psql的命令行历史到`filename`。如果省略`filename`,该历史会被写入到标准输出 |
\set [name[value[ ... ]]] | 1. 设置psql变量name为value,如果给出了多于一个值,则把该变量的值设置为所有给出的值的串接。如果只给了一个参数,该变量会被设置为空字符串值。要重置一个变量,可以使用\unset命令。 2. 合法的变量名可以包含字母、数字和下划线。 3. 不带任何参数的\set显示所有当前设置的psql变量的名称和值。 |
\sf[+] function_description | 1.这个命令以一个CREATE OR REPLACE FUNCTION命令或者CREATE OR REPLACE PROCEDURE命令取出并且显示指定函数或者过程的定义。 2.目标函数可以单独用名称指定,也可以用名称和参数指定,例如foo(integer, text)。如果有多于一个函数具有相同的名字,则必须给出参数的类型。 3.如果向命令名称追加+,那么输出行会被编号,函数体的第一行会被编为 1。 |
\sv[+] view_name | 1.这个命令以一个CREATE OR REPLACE VIEW命令取出并且显示指定视图的定义。 2.如果在命令名称上追加+,那么输出行会从 1 开始编号。 |
\timing [on/off] | 如果给出一个参数,这个参数用来打开或者关闭对每个SQL语句执行时长的显示。如果没有参数,则在打开和关闭之间切换。显示的数据以毫秒为单位,超过1秒的区间还会被显示为“分钟:秒”的格式,如果必要还会加上小时和日的字段 |
\unset name | 重置(删除)psql变量name |
// 查看alerts表字段等具体信息
postgres=# \dS+ alerts
Table "public.alerts"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
----------------------+------------------------+-----------+----------+------------------------------------+----------+--------------+-------------
id | integer | | not null | nextval('alerts_id_seq'::regclass) | plain | |
attack_asset_id | bigint | | | | plain | |
attack_ip | inet | | | | main | |
// 查看索引和表
postgres=# \dit
List of relations
Schema | Name | Type | Owner | Table
--------+-------------------------------------+-------+----------+--------
public | alerts | table | postgres |
public | attack_alarm_pkey | index | postgres | alerts
public | goods | table | postgres |
public | goods_pkey | index | postgres | goods
public | index_attack_alarm_attack_result | index | postgres | alerts
public | index_attack_alarm_attack_type | index | postgres | alerts
public | index_attack_alarm_event_desc | index | postgres | alerts
public | index_attack_alarm_last_time | index | postgres | alerts
public | index_attack_alarm_priority | index | postgres | alerts
public | index_attack_alarm_reliability | index | postgres | alerts
public | index_attack_alarm_rule_id | index | postgres | alerts
public | index_attack_alarm_sub_attack_type | index | postgres | alerts
public | index_attack_alarm_suffer_branch_id | index | postgres | alerts
public | t_index_union | index | postgres | test
public | test | table | postgres |
public | test_pkey | index | postgres | test
(16 rows)
// 查看以array开头的聚合函数
postgres=# \daS array*
List of aggregate functions
Schema | Name | Result data type | Argument data types | Description
------------+-----------+------------------+---------------------+-------------------------------------------
pg_catalog | array_agg | anyarray | anyarray | concatenate aggregate input into an array
pg_catalog | array_agg | anyarray | anynonarray | concatenate aggregate input into an array
(2 rows)
// 查看是否开启了sql语句执行时间
postgres=# \timing
Timing is on.
postgres=# select * from pg_database;
oid | datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl
-------+-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------------
13580 | postgres | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | f | t | -1 | 13579 | 478 | 1 | 1663 |
16411 | test | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | f | t | -1 | 13579 | 478 | 1 | 1663 |
1 | template1 | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | t | t | -1 | 13579 | 478 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres}
13579 | template0 | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | t | f | -1 | 13579 | 478 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres}
(4 rows)
Time: 1.826 ms
// 将sql语句执行时间开关设置为off,执行sql语句之后便不会显示执行时间
postgres=# \set timing off
postgres=# \timing
Timing is off.
postgres=# select * from pg_database;
oid | datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl
-------+-----------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------------
13580 | postgres | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | f | t | -1 | 13579 | 478 | 1 | 1663 |
16411 | test | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | f | t | -1 | 13579 | 478 | 1 | 1663 |
1 | template1 | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | t | t | -1 | 13579 | 478 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres}
13579 | template0 | 10 | 6 | zh_CN.UTF-8 | zh_CN.UTF-8 | t | f | -1 | 13579 | 478 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres}
(4 rows)