PgSQL常用命令

\h

\hpsql 客户端自带的内置帮助命令 (全称 help),专门用来查询所有 SQL 命令的官方语法、参数、用法 ,是你写 SQL 时的随身语法手册

命令 作用 适用场景
\h 查 SQL 命令语法 忘了 CREATE/SELECT/INSERT 怎么写,查官方标准语法
\? 查 psql 自身命令 忘了 \dx/\dt/\l 这些元命令用法

用法:直接输入\h不带任何参数 ,列出 PostgreSQL 支持的所有 SQL 命令清单

精准用法:\h 命令名

查看指定 SQL 命令的完整语法、参数、示例

sql 复制代码
\h 你要查的SQL命令
--- 查 SELECT 语法
\h select

\d

\d = describe(描述)

是 psql 客户端的元命令 ,作用:查看数据库里的对象结构(表、索引、视图、序列等)

简单说:想看一张表有什么字段、什么类型、有没有索引,就用 \d

直接输入,列出当前数据库所有用户对象

sql 复制代码
postgres=# \d
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | tset | table | postgres
(1 row)

\d表名查看指定表的详细结构

命令 作用 你的使用场景
\d 查看所有对象(表 + 索引 + 视图) 快速浏览库内对象
\dt 只看表(最常用) 查看有哪些业务表
\di 只看索引 查看表的索引
\dv 只看视图 查看视图
\ds 只看序列 查看自增 ID 序列
\dx 只看扩展 你之前查 pg_walinspect 用的

\d命令后面的表名或索引名中也可以使用通配符,如"*"或"?"等,示例如下:

sql 复制代码
--- 匹配 以 t 开头 的表
postgres=# \d t*
--- 匹配匹配 4 个字符、tse? 的表
postgres=# \d tse?

\d + 通配符 = 快速查找数据库对象

  • * = 任意字符

  • ? = 单个字符

\d+\d 命令的增强 / 详细版+ 代表 more,更多信息),是 PostgreSQL psql 里查看对象完整详情最实用的命令!

列出当前库所有对象 + 完整详情

复制代码
postgres=# \d+

查看指定表的全部信息

复制代码
postgres=# \d+ tset
复制代码
\dt+   -- 只看【表】+ 详细信息(最常用)
\di+   -- 只看【索引】+ 详细信息
\dv+   -- 只看【视图】+ 详细信息
列名 中文名称 解释(结合的结果)
Schema 模式 / 架构 表的存放目录,public 是 PostgreSQL默认公共模式,所有表默认都放这里
Name 对象名称 表的名字,你这里是 tset
Type 对象类型 表示这是什么对象,table = 普通数据表
Owner 所有者 谁创建的这个表,postgres 是数据库默认的超级管理员账号
Persistence 持久化类型 表的生命周期,permanent = 永久表(不会自动删除,一直存在)
Access method 存储访问方法 表的存储格式,heap = 堆表(PostgreSQL 99% 的表都用这个默认存储格式)
Size 占用空间大小 表在磁盘上占的空间,0 bytes = 空表(还没插入任何数据)
Description 描述 / 注释 表的备注信息,空的 = 你没给这张表加注释

对比 \d\d+ 会额外展示:

  1. 表的物理大小(占用多少磁盘空间)

  2. 表空间(数据存在哪个存储位置)

  3. OID(表的内部唯一编号)

  4. 访问权限(哪个用户可以读写)

  5. 存储参数(填充因子、块大小等)

  6. 注释 / 描述(如果给表加了注释会显示)

  7. 索引的详细归属

要想列出所有的schema,可以使用\dn命令,示例如下:

复制代码
postgres=# \dn
      List of schemas
  Name  |       Owner
--------+-------------------
 public | pg_database_owner
(1 row)

要想显示所有的表空间,可以用\db命令,示例如下:

复制代码
postgres=# \db     
列名 中文含义 解释
Name 表空间名称 表空间的名字
Owner 所有者 谁创建 / 管理这个表空间
Location 磁盘物理路径 这个表空间在电脑硬盘上的存储位置

第一行:pg_default

  • 作用:默认表空间

  • 你创建的所有业务表、索引、数据,默认都存在这里

  • Location 为空:使用数据库安装时的默认数据目录

第二行:pg_global

  • 作用:全局系统表空间

  • 专门存储数据库集群的系统元数据(所有数据库共享的系统信息)

  • Location 为空:系统内置路径

要想列出数据库中的所有角色或用户,可以使用\du\dg命令,示例如下:

列名 含义
Role name 角色名(用户名)
Attributes 角色拥有的权限 / 属性
Member of 该角色属于哪个角色组

Role name: postgres

PostgreSQL 默认的超级管理员账号(相当于 root 管理员),你所有操作都是用这个账号执行的。

Attributes(权限)

  • Superuser超级用户 ,拥有数据库最高权限

  • Create role:可以创建新用户 / 角色

  • Create DB:可以创建数据库

  • Replication:支持主从复制(流复制)权限

  • Bypass RLS:绕过行级安全策略

Member of: {}

空集合 → 表示 postgres 不属于任何其他角色组,本身就是最高权限

"\du"和"\dg"命令等价。原因是,在PostgreSQL数据库中,用户和角色是不分的。

指定客户端字符集的命令\encoding

当客户端的字符编码与服务器不一致时,可能会出现乱码,可以使用"\encoding"命令指定客户端的字符编码,如使用"\encoding gbk;"命令设置客户端的字符编码为"gbk";使用"\encoding utf8;"命令设置客户端的字符编码为"utf8"

格式化输出的\pset命令

\psetpsql 客户端专用的格式化命令 (全称:print set),核心作用:自定义查询结果的显示样式(边框、格式、对齐、空值、分页等),让查询输出更美观、易读。

复制代码
# 查看所有格式化参数的当前设置 \pset    # 设置指定参数 \pset [参数名] [参数值]

常用的 6 个核心参数

  1. border:设置表格边

控制查询结果的边框样式,数字越大边框越完整

复制代码
--- \pset border 0   # 无边框
复制代码
 --- \pset border 1   # 简单分隔线(默认)
复制代码
 --- \pset border 2   # 完整表格边框(推荐!)
  1. format:设置输出格式

切换查询结果的展示格式,支持多种通用格式。

复制代码
\pset format aligned    # 对齐格式(默认,最常用) 
复制代码
\pset format unaligned # 无格式纯文本(逗号分隔)
复制代码
 \pset format csv       # CSV 格式(导出数据用)
复制代码
 \pset format html      # HTML 表格格式 
复制代码
\pset format json      # JSON 格式
  1. null:自定义空值显示

默认查询结果中 NULL 显示为空白,可自定义显示字符。

复制代码
\pset null 'NULL'  # 空值显示为 NULL \pset null '-'     # 空值显示为 -
  1. linestyle:设置边框线条样式

配合 border 使用,让表格更美观。

复制代码
\pset linestyle ascii    # ASCII 字符边框(默认) \pset linestyle unicode  # Unicode 美观线条(推荐!)
  1. pager:开启 / 关闭分页

查询结果过多时,psql 会自动分页显示;关闭后一次性输出全部内容。

复制代码
\pset pager on   # 开启分页(默认) \pset pager off  # 关闭分页(常用)

6.align:设置文本对齐方式

复制代码
\pset align left    # 左对齐(默认) \pset align right   # 右对齐 \pset align center  # 居中对齐

\x命令

使用\x命令可以把按行展示的数据变成按列展示,示例如下:

如果数据行太长出现折行,就可以使用这里介绍的\x命令将其拆分为多行显示。这与MySQL中命令后加\G的功能类似。

更多其他的命令可以用"\?"命令来显示,示例如下