列出 PostgreSQL INFORMATION_SCHEMA 表中的所有表

Bilal Shahid 2023年1月30日 2022年5月14日
  1. 在 PostgreSQL 中检索 INFORMATION_SCHEMA 内的表的基本 SELECT 查询
  2. PostgreSQL 中 INFORMATION_SCHEMASELECT 查询修改
  3. PostgreSQL 中 INFORMATION_SCHEMA 列表(工作更新)的 PSQL 语句
  4. 在 PostgreSQL 的数据库中返回表的 \z
  5. \z 修改以获取 PostgreSQL 中的所有表
列出 PostgreSQL INFORMATION_SCHEMA 表中的所有表

让我们从一个简单的问题开始。INFORMATION_SCHEMA 到底是什么?

INFORMATION_SCHEMA 为我们提供了有关我们数据库中定义的对象的信息。它包含一组 VIEWS,它们存储 QUERY 数据库对象。

下面的查询就像一个 VIEW,因为它返回一个包含 YOUR_TABLE 行的逻辑 TABLE

Select * from [your_table]

INFORMATION_SCHEMA 是预先存在的,这意味着数据库用户可以在需要时访问此表和所有权限,包括 DROP

这个 SCHEMA 包含各种数据库对象,因此如果你想访问某个特定对象,最好写下对象的名称,例如 TABLES,以检索所有表。

现在让我们继续看看我们如何使用它。

在 PostgreSQL 中检索 INFORMATION_SCHEMA 内的表的基本 SELECT 查询

要获取此 SCHEMA 中的所有表,一个非常简单的查询是编写类似这样的内容。

select * from information_schema.tables

这将返回一个像这样的表。

输出:

从信息架构中选择所有

在这里,你可以看到数据库中的所有表及其 TYPE

然而,这个输出有一个令人困惑的方面。如果你向下滚动 OUTPUT 一点,你会注意到这一点。

输出:

信息模式

在这里,你将看到 TABLE_SCHEMA 设置为 INFORMATION_SCHEMA 的不同表。但是,我们不是叫 INFORMATION_SCHEMA.TABLES,那这是什么?

让我们解释一下。TABLE_SCHEMA 告诉我们 SCHEMA 包含该表。

当我们调用 INFORMATION_SCHEMA.TABLES 时,它会返回由其文档中的数据库规则定义的所有对象。因此,它还包括 PG_CATALOGPUBLIC 表。

但是将 TABLE_SCHEMA 设置为 INFORMATION_SCHEMA 的表倾向于遵循称为 SQL STANDARD 的东西,这意味着它们可以在其他不同的 DBMS 系统上查看。你可以通过在 Google 上搜索 ISO/IEC 9075 来查看 SQL 标准

相比之下,PG_CATALOG 只有 PostgreSQL 特定的表;因此,它们包含在该域中。

附带说明一下,INFORMATION_SCHEMA 可能也倾向于将这些 SYSTEM 表输出为符合 SQL STANDARD 的元数据。

PostgreSQL 中 INFORMATION_SCHEMASELECT 查询修改

为了分别从上述查询返回的表范围中获取 INFORMATION_SCHEMA 表,我们使用:

select * from information_schema.tables where table_schema = 'information_schema'

或者,如果你想显示不同的表格集,你可以将 TABLE_SCHEMA 更改为 PUBLICPG_CATALOG

PSQL 中运行相同的查询会返回:

输出:

在 PSQL 中运行查询

PostgreSQL 中 INFORMATION_SCHEMA 列表(工作更新)的 PSQL 语句

要在 PSQL 控制台中查看 INFORMATION_SCHEMA,你可以发出以下语句:

postgres=# \dt information_schema.*

这将返回 INFORMATION_SCHEMA 中的所有对象。DT 用作列出表格的简写形式。

在 PostgreSQL 的数据库中返回表的 \z

另一个非常常用的方法可能包括\z。这被错误地写为'/z',这可能会导致错误。

声明如下。

postgres-# \z

这主要返回用户制作的表格。此外,你可以使用:

postgres-# \dn information_schema

这告诉我们 SCHEMAOWNER

\z 修改以获取 PostgreSQL 中的所有表

第一个解决方案的替代方法是使用:

postgres-# \dt *.*

这将像以前一样返回所有表。

我们希望你了解了我们可以为我们的用户显示 INFORMATION_SCHEMA 表的不同方式。我们总是尽最大努力探索解决问题的可能方法。

今天我们已经介绍了 INFORMATION_SCHEMA 的显示以及可能使用的不同命令和表格。

Author: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

相关文章 - PostgreSQL Tables