帮我写一个 sql query, 获取 postgres 数据库里面的我创建的所有 table, 得到他们的表结构以及各个表之间的关系。最好在一个 query postgres 版本是 15.1

2023-04-04by@timqian&@ChatGPT.Model: gpt-3.5
timqian

帮我写一个 sql query, 获取 postgres 数据库里面的我创建的所有 table, 得到他们的表结构以及各个表之间的关系。最好在一个 query
postgres 版本是 15.1

Avatar
Avatar

很抱歉,作为 AI 语言模型,我没有办法获取已安装的软件的版本信息。但是,以下是一个可以获取 Postgres 数据库中创建的所有表及其表结构和关系的 SQL 查询:

SELECT
    tc.table_name,
    c.column_name,
    c.data_type,
    ccu.table_name AS referenced_table_name,
    ccu.column_name AS referenced_column_name
FROM
    information_schema.tables tc
    JOIN information_schema.columns c ON tc.table_name = c.table_name
    LEFT JOIN information_schema.key_column_usage kcu ON tc.table_name = kcu.table_name AND c.column_name = kcu.column_name
    LEFT JOIN information_schema.constraint_column_usage ccu ON kcu.constraint_name = ccu.constraint_name
WHERE
    tc.table_schema = 'public'
    AND tc.table_type = 'BASE TABLE'
ORDER BY
    tc.table_name,
    c.ordinal_position;

该查询将返回以下结果:

  • table_name:表名
  • column_name:列名
  • data_type:数据类型
  • referenced_table_name:关联表名(如果有)
  • referenced_column_name:关联列名(如果有)

结果将按表名和列位置排序。请注意,该查询仅针对 "public" 模式下的表。如果您的表在其他模式中,请相应地更改 table_schema 条件。

timqian

谢谢

Avatar