最近要做一个二次开发,首先要弄清楚的当然是老项目中的上百张表和它们之间的关系。有的时候,为了弄清表之间关系,需要根据已知一个列名把所有具有该列的表查出来。我用的是oracle的sql developer,这个工具应该有可视化的查找方法,但是我不知道,只好到bing里搜了一下,很幸运,在stackoverflow上面有个人问了同样的问题并得到了答案:
SELECT * FROM ALL_TAB_COLUMNS
WHERE COLUMN_NAME LIKE '%TASK%'
AND owner = 'database_name';
发现,在oracle数据库中,好像有一个名为'ALL_TAB_COLUMNS'的表,保存了所有表信息。
这样就简单了:
SELECT a.table_name FROM ALL_TAB_COLUMNS a where a.owner like '%XXX%' and a.column_name like 'XXX';
这样就查出来了。
我知道,对于懂数据库的人来说,这太低幼了,但是本人这方面基础不好,在此备注一下,自己以后用,如果能对有些童鞋有帮助那也不错。