暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

PG查看表结构、索引、主键、外键、触发器常用SQL

原创 杨凯同学 2023-10-06
3621

概述

今天主要简单总结下PG数据库平时去查看表结构、索引、主键、外键、触发器的一些SQL,仅供参考。


一、查看XX表结构

 \d tablename  

或者如下:

SELECT A
.attnum,
A.attname AS field,
T.typname AS TYPE,
A.attlen AS LENGTH,
A.atttypmod AS lengthvar,
A.attnotnull AS NOTNULL,
b.description AS COMMENT 
FROM
pg_class C,
pg_attribute
A LEFT OUTER JOIN pg_description b ON A.attrelid = b.objoid
AND A.attnum = b.objsubid,
pg_type T
WHERE
C.relname = 'pg_stat_database' 
AND A.attnum > 0 
AND A.attrelid = C.oid
AND A.atttypid = T.oid
ORDER BY
A.attnum;


二、查看表索引

SELECT A
.SCHEMANAME,
A.TABLENAME,
A.INDEXNAME,
A.TABLESPACE,
A.INDEXDEF,
B.AMNAME,
C.INDEXRELID,
C.INDNATTS,
C.INDISUNIQUE,
C.INDISPRIMARY,
C.INDISCLUSTERED,
D.DESCRIPTION
FROM
PG_AM B
LEFT JOIN PG_CLASS F ON B.OID = F.RELAM
LEFT JOIN PG_STAT_ALL_INDEXES E ON F.OID = E.INDEXRELID
LEFT JOIN PG_INDEX C ON E.INDEXRELID = C.INDEXRELID
LEFT OUTER JOIN PG_DESCRIPTION D ON C.INDEXRELID = D.OBJOID,
PG_INDEXES A
WHERE
A.SCHEMANAME = E.SCHEMANAME
AND A.TABLENAME = E.RELNAME
AND A.INDEXNAME = E.INDEXRELNAME
AND E.SCHEMANAME = 'public' --and E.RELNAME = 't_student';
--或者直接查系统视图
select * from pg_indexes


三、查看表主键

--查询主键名称
select c.relname,p.conname from pg_constraint p inner join pg_class c on p.conrelid=c.oid where p.contype='p'
and c.relname='t_bdt_budget_d'
--查询主键的详细信息
SELECT C.relname,
P.conname,
A.attname,
T.typname
FROM
pg_constraint
P INNER JOIN pg_class C ON P.conrelid = C.oid
INNER JOIN pg_attribute A ON A.attrelid = C.oid
AND A.attnum = P.conkey [ 1 ]
INNER JOIN pg_type T ON T.oid = A.atttypid
WHERE
P.contype = 'p' 
AND C.relname = 't_bdt_budget_d'



四、查看表外键

-- 查看当前表ID
SELECT oid, relname FROM pg_class WHERE relname = 'syslogfilter';
-- 查看引用当前表ID作参考表的主外键约束信息
SELECT * FROM pg_CONSTRAINT WHERE confrelid = '24935';
-- 查看那些外键的名称
SELECT oid, relname FROM pg_class WHERE oid in
(
SELECT conrelid FROM pg_CONSTRAINT WHERE confrelid = '24935'
);


五、查看触发器

\dy:查看触发器

--当前数据库所有的触发器
SELECT * FROM pg_trigger
--特定表的触发器
SELECT *  FROM pg_trigger t, pg_class  c WHERE t.tgrelid=c.oid AND c.relname='company';


六、查看视图

\dv: 查看所有自己创建的视图
\dv+: 查看所有自己创建的视图,显示大小

 select * from pg_views

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论