postgres查询表或字段备系统表应用

--------------查询表的字段,数据类型及其备注

SELECT
col_description ( A.attrelid, A.attnum ) AS COMMENT,
format_type ( A.atttypid, A.atttypmod ) AS TYPE,    ---列的数据类型
A.attname AS NAME,                                  ---列名
A.attnotnull AS NOTNULL                       ---列非空约束
FROM
pg_attribute AS A   -----pg_attribute存储有关表列的信息
WHERE
1=1 
and a.attrelid='test'::regclass -----列所属的表的oid(数据库对象::regclass这样得到它的oid)
AND A.attnum > 0   ----列的编号
order by a.attnum  ---按照列的编号升序排列

------查询表的注释

SELECT tb.table_name, d.description
FROM information_schema.tables tb
JOIN pg_class c ON c.relname = tb.table_name
LEFT JOIN pg_description d ON d.objoid = c.oid AND d.objsubid = '0'
WHERE tb.table_schema = 'public';

-------查询所有列注释

SELECT col.table_name, col.column_name, col.ordinal_position AS o, d.description
FROM information_schema.columns col
JOIN pg_class c ON c.relname = col.table_name
LEFT JOIN pg_description d ON d.objoid = c.oid AND d.objsubid = col.ordinal_position
WHERE col.table_schema = 'test_schema'
ORDER BY col.table_name, col.ordinal_position;

-----------------------------查询一个schema下有多少个表

select count(1)
from  pg_class t 
JOIN pg_namespace n on t.relnamespace=n.oid 
where nspname='abc' and relkind='r'

--------------------------查询一个表的主键

SELECT
n.nspname,t.relname,a.attname::text
FROM
pg_constraint c
JOIN pg_class t ON c.conrelid = t.oid
JOIN pg_namespace n on t.relnamespace=n.oid
JOIN pg_attribute a ON a.attnum = ANY (c.conkey) AND a.attrelid = t.oid
WHERE
c.contype = 'p'
AND t.relname = 'test';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要根据表名查询PostgreSQL中的字段信息,可以使用"Information_Schema"模式中的"Columns"视图。这个视图包含了所有的列信息。以下是通过表名查询字段信息的步骤: 1. 首先,连接到PostgreSQL数据库。 2. 使用以下SQL查询语句来从"Columns"视图中获取的列信息: ```sql SELECT column_name, data_type, character_maximum_length FROM information_schema.columns WHERE table_name = 'your_table_name'; ``` 在这个查询语句中,我们选择了"column_name"(列名)、"data_type"(数据类型)以及"character_maximum_length"(字符型列的最大长度)这三个字段。你可以按照你自己的需要添加或删除字段。 3. 将"your_table_name"替换为你要查询表名。 4. 执行查询语句,就会返回该字段信息。 请注意,查询结果将包含与表名匹配的所有字段信息。如果表名不是唯一的,你可能需要进一步限制查询条件以确保只返回所需的。 ### 回答2: 在PostgreSQL中,可以使用以下的SQL语句来查询表名对应的字段信息: ```sql SELECT column_name, data_type, character_maximum_length FROM information_schema.columns WHERE table_name = 'your_table_name'; ``` 在这个语句中,我们使用了information_schema这个系统视图来获取关于数据库对象的元数据信息。其中的columns包含了各个字段信息。我们通过WHERE子句的table_name条件来指定要查询表名。 这个语句将返回与指定表名对应的所有字段的信息,包括字段名、数据类型和最大字符长度(如果适用)。你可以根据需要对返回结果进行自定义的处理,比如筛选字段名或执行其他相关操作。 值得注意的是,这个查询语句只是返回了字段的基本信息,如果你想要获取更详细的信息,比如字段的默认值、约束或索引信息,你可能需要使用其他的系统视图或格来进一步查询。 ### 回答3: 在PostgreSQL中,根据表名查询字段信息的方法是通过查询系统目录来获取相应的信息。可以通过以下步骤来实现: 1. 首先,连接到PostgreSQL数据库,可以使用命令行工具如psql或通过编程语言的相应库连接到数据库。 2. 使用以下查询语句来获取字段信息: ``` SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'your_table_name'; ``` 这个查询语句将从`information_schema.columns`系统目录中选择出指定表名的`column_name`和`data_type`字段。`column_name`字段的列名,`data_type`字段示列的数据类型。 3. 将`your_table_name`替换为实际需要查询字段信息的表名,并执行以上查询语句。 4. 查询结果将返回包含列名和数据类型的格,可根据具体需求进行解析和使用。 请注意,使用以上方法查询字段信息可能不包含扩展的属性如约束、索引等。如果需要获取更详细的的元数据信息,可以查询其他系统目录如`pg_attribute`、`pg_constraint`等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值