×

PGSQL常用命令

独孤求败 独孤求败 发表于2026-06-05 08:56:04 浏览12 评论0

抢沙发发表评论

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对象名称表的名字,你这里是 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命令

\pset 是 psql 客户端专用的格式化命令(全称: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的功能类似。

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

图片


群贤毕至

访客