Home > 数据库 > 一句话选出指定表的所有关联表

一句话选出指定表的所有关联表

经常会遇到这样的问题: 在Oracle数据库中,用一个简单的SQL语句就能从指定的数据库找出所有跟指定表关联的所有表,包括指定表的母表和子表. 其实要用一句找出所有子表不难,而要找出母表也不难,关键是一次找出所有的母表和子表. 其实在Oracle数据字典中,这些信息是可以一次找出来的,参考下面的语句.
SELECT a.constraint_type con_type, a.table_name as src_table,a.constraint_name AS src_con,
(select column_name from user_cons_columns where table_name=a.table_name AND constraint_name = a.constraint_name) as src_col,
b.table_name AS ref_table,b.constraint_name AS ref_con,
(select column_name from user_cons_columns where table_name=b.table_name AND constraint_name = b.constraint_name) as ref_col
FROM user_constraints a,user_constraints b
WHERE a.constraint_type = ‘R’
AND a.r_constraint_name = b.constraint_name
AND (a.table_name = ‘MY_TABLE‘ or b.table_name=’MY_TABLE‘);

注意其中的粗体表示用户指定的表名,均要用大写.

Categories: 数据库 Tags:

No Comments

(Required)
(Required, will not be published)