列出 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