postgresql如何展示所有的表
在 PostgreSQL 中,可以通过以下方法展示当前数据库中的所有表。
方法 1:在 psql
中使用元命令
如果你是通过 psql
命令行连接到数据库,可以直接使用以下元命令:
查看当前数据库的所有表
\dt
\dt
会列出当前模式中所有的 用户定义的表。- 格式如下:
List of relations Schema | Name | Type | Owner -------+-------+------+------- public | table1 | table | postgres public | table2 | table | postgres
查看所有模式中的表
有些表可能存在于不止 public
模式中。如果你想查看所有模式的表,运行以下命令:
\dt *
\dt *
列出所有模式中的表,包括自定义表和 PostgreSQL 的内置系统表。
查看所有表和其他对象:
如果不仅仅是查看用户表,而是包括所有对象(如视图、序列等),可以使用:
\dv -- 查看所有视图
\ds -- 查看所有序列
\d -- 查看当前模式中所有对象(表、视图、索引等)
\d * -- 查看所有模式中的所有对象
方法 2:通过 SQL 查询列出所有表
PostgreSQL 的表和元数据存储在系统表 information_schema
和 pg_catalog
中。你可以通过 SQL 查询获取所有表的列表。
查询当前模式所有用户表
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public' AND table_type = 'BASE TABLE';
table_schema = 'public'
:只列出public
模式中的表。table_type = 'BASE TABLE'
:表示只显示基础表(忽略视图和其他对象)。
查询所有模式所有表
如果想查看所有表,可以去掉 table_schema
的限制条件:
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_type = 'BASE TABLE';
方法 3:使用 pg_catalog
查询获取所有表(包括系统表)
PostgreSQL 存储表信息的系统表是 pg_tables
,可以通过以下 SQL 查询获取表信息:
当前数据库所有表
SELECT *
FROM pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema');
pg_tables
是 PostgreSQL 内置的系统表。- 忽略
pg_catalog
和information_schema
模式,这些模式属于系统表和元数据。
包括系统表和用户表
如果需要查看包括系统表在内的所有表,可以省略过滤条件:
SELECT * FROM pg_tables;
方法 4:查看表的详细信息
显示单个表的结构
使用 psql
命令中的 \d
来查看表结构:
\d table_name
列出带表结构的所有表
通过指定 \d *
来依次列出所有表及其结构:
\d *
总结命令:
场景 | 命令或 SQL |
---|---|
查看当前数据库所有用户表 (psql ) | \dt |
查看所有模式的表 (psql ) | \dt * |
通过 SQL 查询当前模式的表 | SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE'; |
通过 SQL 查询所有模式的表 | SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE'; |
通过 pg_catalog 查询用户表 | SELECT * FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema'); |
显示单个表结构 | \d table_name |
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:http://www.choupangxia.com/2025/08/02/postgresql-show-all-tables/