PGSQL常用命令\h\d指定客户端字符集的命令\encoding格式化输出的\pset命令\x命令
PGSQL常用命令
\h
\h 是 psql 客户端自带的内置帮助命令(全称 help),专门用来查询所有 SQL 命令的官方语法、参数、用法,是你写 SQL 时的随身语法手册
命令 作用 适用场景 \h查 SQL 命令语法 忘了 CREATE/SELECT/INSERT 怎么写,查官方标准语法\?查 psql 自身命令 忘了 \dx/\dt/\l 这些元命令用法
用法:直接输入\h不带任何参数,列出 PostgreSQL 支持的所有 SQL 命令清单
精准用法:\h 命令名
查看指定 SQL 命令的完整语法、参数、示例
\h 你要查的SQL命令--- 查 SELECT 语法\h select
\d
\d = describe(描述)
是 psql 客户端的元命令,作用:查看数据库里的对象结构(表、索引、视图、序列等)
简单说:想看一张表有什么字段、什么类型、有没有索引,就用 \d
直接输入,列出当前数据库所有用户对象
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命令后面的表名或索引名中也可以使用通配符,如“*”或“?”等,示例如下:
--- 匹配 以 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 对象名称 表的名字,你这里是 tsetType 对象类型 表示这是什么对象, table = 普通数据表Owner 所有者 谁创建的这个表, postgres 是数据库默认的超级管理员账号Persistence 持久化类型 表的生命周期, permanent = 永久表(不会自动删除,一直存在)Access method 存储访问方法 表的存储格式, heap = 堆表(PostgreSQL 99% 的表都用这个默认存储格式)Size 占用空间大小 表在磁盘上占的空间, 0 bytes = 空表(还没插入任何数据)Description 描述 / 注释 表的备注信息,空的 = 你没给这张表加注释
对比 \d,\d+ 会额外展示:
表的物理大小(占用多少磁盘空间)
表空间(数据存在哪个存储位置)
OID(表的内部唯一编号)
访问权限(哪个用户可以读写)
存储参数(填充因子、块大小等)
注释 / 描述(如果给表加了注释会显示)
索引的详细归属
要想列出所有的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命令
\pset 是 psql 客户端专用的格式化命令(全称:print set),核心作用:自定义查询结果的显示样式(边框、格式、对齐、空值、分页等),让查询输出更美观、易读。
# 查看所有格式化参数的当前设置 \pset # 设置指定参数 \pset [参数名] [参数值]
常用的 6 个核心参数
border:设置表格边
控制查询结果的边框样式,数字越大边框越完整
--- \pset border 0 # 无边框
--- \pset border 1 # 简单分隔线(默认)
--- \pset border 2 # 完整表格边框(推荐!)
format:设置输出格式
切换查询结果的展示格式,支持多种通用格式。
\pset format aligned # 对齐格式(默认,最常用)
\pset format unaligned # 无格式纯文本(逗号分隔)
\pset format csv # CSV 格式(导出数据用)
\pset format html # HTML 表格格式
\pset format json # JSON 格式
null:自定义空值显示
默认查询结果中 NULL 显示为空白,可自定义显示字符。
\pset null 'NULL' # 空值显示为 NULL \pset null '-' # 空值显示为 -
linestyle:设置边框线条样式
配合 border 使用,让表格更美观。
\pset linestyle ascii # ASCII 字符边框(默认) \pset linestyle unicode # Unicode 美观线条(推荐!)
pager:开启 / 关闭分页
查询结果过多时,psql 会自动分页显示;关闭后一次性输出全部内容。
\pset pager on # 开启分页(默认) \pset pager off # 关闭分页(常用)
6.align:设置文本对齐方式
\pset align left # 左对齐(默认) \pset align right # 右对齐 \pset align center # 居中对齐
\x命令
使用\x命令可以把按行展示的数据变成按列展示,示例如下:
如果数据行太长出现折行,就可以使用这里介绍的\x命令将其拆分为多行显示。这与MySQL中命令后加\G的功能类似。
更多其他的命令可以用“\?”命令来显示,示例如下