📜  postgresql 在所有表中搜索列名 - SQL (1)

📅  最后修改于: 2023-12-03 14:45:35.793000             🧑  作者: Mango

PostgreSQL 在所有表中搜索列名 - SQL

在 PostgreSQL 中,如何在所有表中搜索一个特定的列名?这在处理大型数据集时非常有用,因为你不必手动检查每个表以查找该列名。下面介绍如何使用 SQL 查询来搜索 PostgreSQL 数据库中的所有表中的列名。

使用系统表查询

在 PostgreSQL 中,有一些系统表可以查询以获取与数据库和模式相关的信息。我们将使用以下两个系统表来查找列名:information_schema.columnspg_catalog.pg_attribute

information_schema.columns

该表存储了表中的所有列的详细信息。我们可以使用以下 SQL 查询来查找表中是否存在一个特定的列名:

SELECT *
FROM information_schema.columns
WHERE column_name = 'your_column_name';

这将返回包含搜索列名称的所有表的详细信息,例如表名称、模式名称、数据类型等。

pg_catalog.pg_attribute

此表存储有关 PostgreSQL 中的每个表列的详细信息。要在表中查找列名,请使用以下 SQL 查询:

SELECT *
FROM pg_catalog.pg_attribute
WHERE attname = 'your_column_name';

这将返回包含搜索列名称的所有表的详细信息,例如表名称、模式名称、数据类型等。

将两个系统表结合起来使用

如果我们想要在所有表中搜索列名,可以将 information_schema.columnspg_catalog.pg_attribute 结合起来使用。这是使用联接查询的一种方法:

SELECT c.table_schema, c.table_name
FROM information_schema.columns c
LEFT JOIN pg_catalog.pg_attribute a ON c.column_name = a.attname
WHERE c.column_name = 'your_column_name';

此查询将返回包含搜索列名称的所有表的模式名称和表名称。如果你还需要每个表中的列详细信息,可以包括 a.* 列在 SELECT 语句中。

结论

在 PostgreSQL 中查找列名可以使用 information_schema.columnspg_catalog.pg_attribute 系统表。我们可以单独使用这两个表来查找列名,也可以将它们结合在一起使用。无论使用哪种方法,结果都将返回包含搜索列名的所有表的详细信息。