搜索
您的当前位置:首页正文

PostgreSQL-查询表结构和索引信息

来源:爱go旅游网
PostgreSQL-查询表结构和索引信息

前⾔

PostgreSQL的表⼀般都是建⽴在public这个schema下的,假如现在有个数据表t_student,可以⽤以下⼏种⽅式来查询表结构和索引信息。

使⽤\\d元命令查看表字段信息和索引信息

在cmd界⾯使⽤psql连接db后,输⼊\\d加上表名即可:

\\d t_student

通过系统数据字典查询表结构

select

col.table_schema,col.table_name,col.ordinal_position,col.column_name,col.data_type,

col.character_maximum_length,col.numeric_precision,col.numeric_scale,col.is_nullable,

col.column_default,des.descriptionfrom

information_schema.columns col left join pg_description des oncol.table_name::regclass = des.objoidand col.ordinal_position = des.objsubidwhere

table_schema = 'public'

and table_name = 't_student'order by

ordinal_position;

或者简单点:

select * from information_schema.columns

where table_schema='public' and table_name='t_student';

通过系统数据字典查询索引信息

select

A.SCHEMANAME,A.TABLENAME,A.INDEXNAME,A.TABLESPACE,A.INDEXDEF,B.AMNAME,C.INDEXRELID,C.INDNATTS,C.INDISUNIQUE,C.INDISPRIMARY,C.INDISCLUSTERED,D.DESCRIPTIONfrom

PG_AM B left join PG_CLASS F on

B.OID = F.RELAM left join PG_STAT_ALL_INDEXES E onF.OID = E.INDEXRELID left join PG_INDEX C on

E.INDEXRELID = C.INDEXRELID left outer join PG_DESCRIPTION D onC.INDEXRELID = D.OBJOID,PG_INDEXES Awhere

A.SCHEMANAME = E.SCHEMANAMEand A.TABLENAME = E.RELNAME

and A.INDEXNAME = E.INDEXRELNAMEand E.SCHEMANAME = 'public'and E.RELNAME = 't_student';

查询所有的表名

select

n.nspname,relnamefrom

pg_class c,

pg_namespace nwhere

c.relnamespace = n.oidand nspname = 'public'and relkind = 'r'order byrelname;

可视化⼯具DBeaver

对于上述的sql语句只需要修改要查询的table name,可以根据需要⾃⾏修改想要查询的column。如果是通过DBeaver来连接数据库,还可以直接在当前的数据库实例下打开schema⾥的public选项,接着选中table,选中你想查看的表,可以很直观地看到该表的各种信息:column、index等等。

参考链接

因篇幅问题不能全部显示,请点此查看更多更全内容

Top