列出 PostgreSQL INFORMATION_SCHEMA 表中的所有表
-
在 PostgreSQL 中檢索
INFORMATION_SCHEMA
內的表的基本SELECT
查詢 -
PostgreSQL 中
INFORMATION_SCHEMA
的SELECT
查詢修改 -
PostgreSQL 中
INFORMATION_SCHEMA
列表(工作更新)的PSQL
語句 -
在 PostgreSQL 的資料庫中返回表的
\z
-
\z
修改以獲取 PostgreSQL 中的所有表
讓我們從一個簡單的問題開始。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_CATALOG
和 PUBLIC
表。
但是將 TABLE_SCHEMA
設定為 INFORMATION_SCHEMA
的表傾向於遵循稱為 SQL STANDARD
的東西,這意味著它們可以在其他不同的 DBMS 系統上檢視。你可以通過在 Google 上搜尋 ISO/IEC 9075
來檢視 SQL 標準
。
相比之下,PG_CATALOG
只有 PostgreSQL 特定的表;因此,它們包含在該域中。
附帶說明一下,INFORMATION_SCHEMA
可能也傾向於將這些 SYSTEM
表輸出為符合 SQL STANDARD
的後設資料。
PostgreSQL 中 INFORMATION_SCHEMA
的 SELECT
查詢修改
為了分別從上述查詢返回的表範圍中獲取 INFORMATION_SCHEMA
表,我們使用:
select * from information_schema.tables where table_schema = 'information_schema'
或者,如果你想顯示不同的表格集,你可以將 TABLE_SCHEMA
更改為 PUBLIC
或 PG_CATALOG
。
在 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
這告訴我們 SCHEMA
的 OWNER
。
\z
修改以獲取 PostgreSQL 中的所有表
第一個解決方案的替代方法是使用:
postgres-# \dt *.*
這將像以前一樣返回所有表。
我們希望你瞭解了我們可以為我們的使用者顯示 INFORMATION_SCHEMA
表的不同方式。我們總是盡最大努力探索解決問題的可能方法。
今天我們已經介紹了 INFORMATION_SCHEMA
的顯示以及可能使用的不同命令和表格。
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