ITPub博客

首页 > 数据库 > Oracle > Oracle 查询所有表之间的主外键关系

Oracle 查询所有表之间的主外键关系

Oracle 作者:weloveaiko 时间:2013-01-23 16:19:00 0 删除 编辑

select a.constraint_name, a.table_name, b.constraint_name 
from user_constraints a, user_constraints b
where a.constraint_type = 'R' 
and b.constraint_type = 'P' 
and a.r_constraint_name = b.constraint_name

P 代表主键
R 代表外键

----------------------------------------------------------------------------------------------

Oracle 查看一个表对应的主键和外键的约束关系,查看的语句:

select a.owner 主键拥有者

         ,a.table_name 主键表

        ,b.column_name 主键列

        ,C.OWNER 外键拥有者

        ,c.table_name 外键表

       ,d.column_name 外键列
from user_constraints a
left join user_cons_columns b

            on a.constraint_name=b.constraint_name
left join user_constraints C

            ON C.R_CONSTRAINT_NAME=a.constraint_name
left join user_cons_columns d

            on c.constraint_name=d.constraint_name
where a.constraint_type='P'

    and a.table_name='XXX' --需要查看主外键关系的表
order by a.table_name

另外的一种写法:

select
a.owner 外键拥有者,
a.table_name 外键表,
substr(c.column_name,1,127) 外键列,
b.owner 主键拥有者,
b.table_name 主键表,
substr(d.column_name,1,127) 主键列
from
user_constraints a,
user_constraints b,
user_cons_columns c,
user_cons_columns d
where
    a.r_constraint_name=b.constraint_name
and a.constraint_type='R'
and b.constraint_type='P'
and a.r_owner=b.owner
and a.constraint_name=c.constraint_name
and b.constraint_name=d.constraint_name
and a.owner=c.owner
and a.table_name=c.table_name
and b.owner=d.owner
and b.table_name=d.table_name

------------------------------------------------------------------------------------------

desc user_cons_columns;

------------------------------------------------------------------------------------------

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7236311/viewspace-1116031/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论