mysql查询某张表的所有外键_[MySQL]MySQL数据库中如何使用SQL语句查看表或者列的所有外键?...

[MySQL]MySQL数据库中如何使用SQL语句查看表或者列的所有外键?

问题描述

如题,[MySQL]MySQL数据库中如何使用SQL语句查看表或者列的所有外键?

方案一

查看一张表的所有外键:

SELECT

TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME

FROM

INFORMATION_SCHEMA.KEY_COLUMN_USAGE

WHERE

REFERENCED_TABLE_SCHEMA = '' AND

REFERENCED_TABLE_NAME = '

查看一个列的所有外键:

SELECT

TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME

FROM

INFORMATION_SCHEMA.KEY_COLUMN_USAGE

WHERE

REFERENCED_TABLE_SCHEMA = '' AND

REFERENCED_COLUMN_NAME = '';

方案二

如果使用InnoDB引擎并且定义了外键:

SELECT * FROM information_schema.TABLE_CONSTRAINTS

WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'

AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'myschema'

AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'mytable';

方案三

查看一张表的所有外键:

USE '';

SELECT i.TABLE_NAME, i.CONSTRAINT_TYPE, i.CONSTRAINT_NAME, k.REFERENCED_TABLE_NAME, k.REFERENCED_COLUMN_NAME

FROM information_schema.TABLE_CONSTRAINTS i

LEFT JOIN information_schema.KEY_COLUMN_USAGE k ON i.CONSTRAINT_NAME = k.CONSTRAINT_NAME

WHERE i.CONSTRAINT_TYPE = 'FOREIGN KEY'

AND i.TABLE_SCHEMA = DATABASE()

AND i.TABLE_NAME = '';

查看框架(schema)中所有表的所有外键:

USE '';

SELECT i.TABLE_NAME, i.CONSTRAINT_TYPE, i.CONSTRAINT_NAME, k.REFERENCED_TABLE_NAME, k.REFERENCED_COLUMN_NAME

FROM information_schema.TABLE_CONSTRAINTS i

LEFT JOIN information_schema.KEY_COLUMN_USAGE k ON i.CONSTRAINT_NAME = k.CONSTRAINT_NAME

WHERE i.CONSTRAINT_TYPE = 'FOREIGN KEY'

AND i.TABLE_SCHEMA = DATABASE();

查看数据库中所有外键:

SELECT i.TABLE_SCHEMA, i.TABLE_NAME, i.CONSTRAINT_TYPE, i.CONSTRAINT_NAME, k.REFERENCED_TABLE_NAME, k.REFERENCED_COLUMN_NAME

FROM information_schema.TABLE_CONSTRAINTS i

LEFT JOIN information_schema.KEY_COLUMN_USAGE k ON i.CONSTRAINT_NAME = k.CONSTRAINT_NAME

WHERE i.CONSTRAINT_TYPE = 'FOREIGN KEY';

方案四

查看数据所有关系及约束等集合

select

concat(table_name, '.', column_name) as 'foreign key',

concat(referenced_table_name, '.', referenced_column_name) as 'references',

constraint_name as 'constraint name'

from

information_schema.key_column_usage

where

referenced_table_name is not null;

如果想要查看指定的数据库和数据表,则:

select

concat(table_name, '.', column_name) as 'foreign key',

concat(referenced_table_name, '.', referenced_column_name) as 'references',

constraint_name as 'constraint name'

from

information_schema.key_column_usage

where

referenced_table_name is not null

and table_schema = 'database_name';

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值