在PostgreSQL中显示表(来自MySQL)的等价物是什么?
当前回答
您可以使用PostgreSQL的交互式终端Psql来显示PostgreSQL中的表。
1.启动Psql
通常,您可以运行以下命令进入psql:
psql DBNAME USERNAME
例如,psql template1 postgres
您可能遇到的一种情况是:假设您以root用户身份登录,但不记得数据库名称。您可以通过运行以下命令首先进入Psql:
sudo -u postgres psql
在某些系统中,sudo命令不可用,您可以运行以下任一命令:
psql -U postgres
psql --username=postgres
2.显示表格
现在在Psql中,您可以运行以下命令:
\? 列出所有命令\l列出数据库\conninfo显示有关当前连接的信息\c[DBNAME]连接到新数据库,例如\c template1\公共模式的dt列表表\dt<schema name>.*列出特定架构的表,例如\dt public*\dt*.*列出所有模式的表然后可以运行SQL语句,例如SELECT*FROM my_table;(注意:语句必须以分号结尾;)\q退出psql
其他回答
从psql命令行界面,
首先,选择数据库
\c database_name
然后,这将显示当前模式中的所有表:
\dt
编程(当然也可以从psql接口):
SELECT * FROM pg_catalog.pg_tables;
系统表位于pg_catalog数据库中。
(为完整起见)
您还可以查询(SQL标准)信息架构:
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
如果您在PostgreSQL中使用pgAdmin4,可以使用它来显示数据库中的表:
select * from information_schema.tables where table_schema='public';
请注意,仅\dt将列出您正在使用的数据库的公共模式中的表。我喜欢将表保存在单独的模式中,因此接受的答案对我来说不起作用。
要列出特定模式中的所有表,我需要:
1) 连接到所需的数据库:
psql mydb
2) 指定要在\dt命令后查看表的架构名称,如下所示:
\dt myschema.*
这显示了我感兴趣的结果:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
可以使用\dt列出当前数据库中的表。
Fwiw,\d tablename将显示给定表的详细信息,类似于显示MySQL中tablename中的列,但提供了更多信息。
推荐文章
- 如何添加“删除级联”约束?
- 如何将PostgreSQL从9.6版本升级到10.1版本而不丢失数据?
- 为现有数据库生成ERD
- PostgreSQL错误:由于与恢复冲突而取消语句
- 按IN值列表排序
- 如何在Postgres 9.4中对JSONB类型的列执行更新操作
- PostgreSQL列名区分大小写吗?
- postgresql COUNT(DISTINCT…)非常慢
- Postgres:检查数组字段是否包含值?
- 如何在postgresql中创建数据库用户?
- 使用PSQL命令查找主机名和端口
- Postgresql列表和排序表的大小
- 选择其他表中没有的行
- 在PostgreSQL中使用UTC当前时间作为默认值
- 优化PostgreSQL进行快速测试