在 PostgreSQL 中列出表

David Mbochi Njonge 2023年1月30日
  1. 開始使用 PostgreSQL 資料庫
  2. 在 PostgreSQL 中使用 \dt 命令顯示錶
  3. 在 PostgreSQL 中顯示特定模式中的表
  4. 在 PostgreSQL 的所有模式中顯示錶
  5. 在 PostgreSQL 中使用 information_schema 顯示錶
在 PostgreSQL 中列出表

本教程將使用 PostgreSQL 資料庫來展示我們可以用來返回資料庫表集合的不同命令。

MySQL 資料庫中,你會遇到的常見命令是 SHOW TABLES,但在 PostgreSQL 中,資料庫管理系統不理解此命令。

開始使用 PostgreSQL 資料庫

你可以安裝 PostgreSQL 資料庫並使用以下命令登入到你的資料庫。

>psql -U postgres

提示輸入密碼,我們應該輸入我們在安裝過程中指定的密碼,然後回車。

我們可能已經建立了多個資料庫,我們應該使用以下命令列出所有可用的資料庫。

\l

輸出:

                                         List of databases
   Name    |  Owner   | Encoding |      Collate       |       Ctype        |   Access privileges
-----------+----------+----------+--------------------+--------------------+-----------------------
 employee  | postgres | UTF8     | English_Kenya.1252 | English_Kenya.1252 |
 postgres  | postgres | UTF8     | English_Kenya.1252 | English_Kenya.1252 |
 template0 | postgres | UTF8     | English_Kenya.1252 | English_Kenya.1252 | =c/postgres          +
           |          |          |                    |                    | postgres=CTc/postgres
 template1 | postgres | UTF8     | English_Kenya.1252 | English_Kenya.1252 | =c/postgres          +
           |          |          |                    |                    | postgres=CTc/postgres
(4 rows)

在標記為 Name 的列上,我們可以看到三個資料庫 employeepostgrestemplate0template1。要選擇我們要使用的資料庫 employee,請使用以下命令。

連線從當前連線的資料庫 postgres 轉移到我們想要使用的 employee

postgres=# \c employee;

在 PostgreSQL 中使用 \dt 命令顯示錶

\dt 命令在 PostgreSQL 中用於描述所有表,使用如下所示。該命令返回一行,因為我們在資料庫中只有一個表。

employee=# \dt

輸出:

          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | employee | table | postgres
(1 row)

在 PostgreSQL 中顯示特定模式中的表

由於我們可以在 PostgreSQL 中擁有不同的模式來儲存不同的資料庫,因此我們可以在查詢中指定我們想要的模式,並且該模式中的所有表都將返回給我們。

以下命令返回公共模式中的所有表。

employee=# \dt public.*

輸出:

          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | employee | table | postgres
(1 row)

在 PostgreSQL 的所有模式中顯示錶

正如我們在上面返回公共模式中的表列表所做的那樣,我們可以使用相同的命令而不指定任何模式來返回資料庫中的所有表。

employee=# \dt *.*

輸出:

                       List of relations
       Schema       |          Name           | Type  |  Owner
--------------------+-------------------------+-------+----------
 information_schema | sql_features            | table | postgres
 information_schema | sql_implementation_info | table | postgres
 information_schema | sql_parts               | table | postgres
 information_schema | sql_sizing              | table | postgres
 pg_catalog         | pg_aggregate            | table | postgres
 pg_catalog         | pg_am                   | table | postgres
 pg_catalog         | pg_amop                 | table | postgres
 pg_catalog         | pg_amproc               | table | postgres
 pg_catalog         | pg_attrdef              | table | postgres
 pg_catalog         | pg_attribute            | table | postgres
 pg_catalog         | pg_auth_members         | table | postgres
 pg_catalog         | pg_authid               | table | postgres
 pg_catalog         | pg_cast                 | table | postgres
 pg_catalog         | pg_class                | table | postgres
 pg_catalog         | pg_collation            | table | postgres
 pg_catalog         | pg_constraint           | table | postgres
 pg_catalog         | pg_conversion           | table | postgres
 pg_catalog         | pg_database             | table | postgres
 pg_catalog         | pg_db_role_setting      | table | postgres
 pg_catalog         | pg_default_acl          | table | postgres
 pg_catalog         | pg_depend               | table | postgres
 pg_catalog         | pg_description          | table | postgres
 pg_catalog         | pg_enum                 | table | postgres
 pg_catalog         | pg_event_trigger        | table | postgres
 pg_catalog         | pg_extension            | table | postgres
 pg_catalog         | pg_foreign_data_wrapper | table | postgres
-- More  --

在 PostgreSQL 中使用 information_schema 顯示錶

information_schema 是一個包含有關當前資料庫的資訊的表,我們可以使用 select 語句查詢它以查詢資料庫中的公共實體。

此查詢可能不容易閱讀。我們可以使用以下命令開啟擴充套件顯示來解決這個問題。

employee=# \x
select * from information_schema.tables where table_schema='public';

輸出:

employee=# select * from information_schema.tables where table_schema='public';
-[ RECORD 1 ]----------------+-----------
table_catalog                | employee
table_schema                 | public
table_name                   | employee
table_type                   | BASE TABLE
self_referencing_column_name |
reference_generation         |
user_defined_type_catalog    |
user_defined_type_schema     |
user_defined_type_name       |
is_insertable_into           | YES
is_typed                     | NO
commit_action                |
David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

相關文章 - PostgreSQL Tables