在 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