如何使用SQL Server查询与Application表关联的所有表?
这问题我太熟了!不用依赖数据库图,直接查询数据库自带的系统元数据表就能找出所有和Application表关联的表。不同数据库系统的系统表结构不一样,给你整理几个主流数据库的可行方案:
MySQL/MariaDB
直接查information_schema.KEY_COLUMN_USAGE视图,这里面记录了所有外键关联信息:
SELECT DISTINCT TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'Application' AND REFERENCED_TABLE_SCHEMA = '你的数据库名'; -- 替换成实际库名
DISTINCT是为了避免同一个表多次关联Application时重复出现,指定REFERENCED_TABLE_SCHEMA能精准过滤,避免跨库干扰。
SQL Server
通过sys.foreign_keys和sys.tables关联查询:
SELECT DISTINCT t.name AS 关联表名 FROM sys.foreign_keys fk JOIN sys.tables t ON fk.parent_object_id = t.object_id JOIN sys.tables ref_t ON fk.referenced_object_id = ref_t.object_id WHERE ref_t.name = 'Application';
核心是通过外键对象关联到父表(也就是关联Application的表),再过滤被引用表为Application的记录。
PostgreSQL
结合information_schema.table_constraints和information_schema.constraint_column_usage查询:
SELECT DISTINCT tc.table_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage ccu ON tc.constraint_name = ccu.constraint_name WHERE tc.constraint_type = 'FOREIGN KEY' AND ccu.table_name = 'Application';
先筛选出外键约束,再关联到被引用表是Application的记录,最后取出对应的关联表名。
如果你的数据库是其他类型(比如Oracle),可以告诉我,我再给你补充对应的语句~
内容的提问来源于stack exchange,提问作者TechManiac
相关产品推荐
相关产品推荐

