Oracle查询表与表之间的关联关系及主外键关系


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



select usertable.table_name,
       rtable.rrcolumn,
       rtable.ppcolumn,
       rtable.rtablename
  from user_tables usertable
  left join (select aa.ptablename,
                    aa.rtablename,
                    wm_concat(distinct rcolumn) rrcolumn,
                    wm_concat(distinct pcolumn) ppcolumn
               from (select a.owner rowner,
                            a.table_name rtablename,
                            substr(c.column_name, 1, 127) rcolumn,
                            b.owner powner,
                            b.table_name ptablename,
                            substr(d.column_name, 1, 127) pcolumn
                       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) aa
              group by aa.rtablename, aa.ptablename) rtable
    on usertable.TABLE_NAME = rtable.ptablename 
    order by  rtable.rtablename desc


查询表与表之间的关联关系


浏览 662 评论 0 赞 0 砸 0 标签: oracle
评论
还可以再输入500个字

请您注意

·自觉遵守:爱国、守法、自律、真实、文明的原则
·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·您在NoteShare上发表的作品,NoteShare有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款