在 PostgreSQL 中列出表
- 開始使用 PostgreSQL 資料庫
-
在 PostgreSQL 中使用
\dt
命令顯示錶 - 在 PostgreSQL 中顯示特定模式中的表
- 在 PostgreSQL 的所有模式中顯示錶
-
在 PostgreSQL 中使用
information_schema
顯示錶
本教程將使用 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
的列上,我們可以看到三個資料庫 employee
、postgres
、template0
和 template1
。要選擇我們要使用的資料庫 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 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