在 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