在MySQL中,如何获取指向特定表的所有外键约束的列表?一个特定的专栏?这与Oracle问题相同,但对MySQL而言.
对于表:
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_TABLE_NAME = ' ' AND REFERENCED_COLUMN_NAME = '
'; 基本上,我们在where子句中使用REFERENCED_COLUMN_NAME更改了REFERENCED_TABLE_NAME.
这总是给我一个空集,而下面的Node提出的查询工作正常
@Acute:你确定要询问正确的桌子吗?如果Node的查询有效,那么你可能会询问另一个方向(即,来自mytable的键,而不是to mytable的键.)这期望你用表名写了''而没有'<'和'>' ?
除非您确定表名是唯一的,否则您可能也希望将查询限制在特定数据库中.将where子句更改为:`其中REFERENCED_TABLE_SCHEMA ='mydatabase'和REFERENCED_TABLE_NAME ='mytable'
好像我误解你的查询,因为我查询键引用从:)(是的,我写的,而不是"
" XD表名)
2> CenterOrbit..:编辑:正如在评论中指出,这不是正确答案OP的问题,但它是有用的知道这个命令.这个问题出现在谷歌我正在寻找的东西,并认为我留下这个答案让其他人找到.
SHOW CREATE TABLE ``; 我在这里找到了这个答案: MySQL:对表命令显示约束
我需要这种方式,因为我想看看FK是如何运作的,而不仅仅是看它是否存在.
这显示了``中的所有约束,而不是所有指向` `的约束.
正如@Barmar所说,这是完全错误的; 它将显示属于指定表的外键,但不会显示指向表格的外键,这是问题所要求的.不知道这是如何获得50票的; 我猜人们真的在这里找到了相反问题的答案,无论如何都找到了他们的答案,并且在提出之前并没有费心阅读原始问题(甚至是标题).
这就是我所寻找的,所以感谢发布它,即使它没有回答OP的问题.永远不会伤害知道如何在关系中向两个方向看!
@MarkAmery:这是谷歌"显示外键mysql"的第一个结果,可能就是这个原因;)
3> Node..:如果您使用InnoDB并定义了FK,您可以查询information_schema数据库,例如:
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';
实际上,这指向了错误的方向.该查询显示指向FROM'mytable'的所有外键,而不是所有指向''mytable'的外键.
4> Andy..:发布旧答案以添加一些有用的信息.
我有类似的问题,但我也希望看到CONSTRAINT_TYPE以及REFERENCED表和列名.所以,
要查看表格中的所有FK:
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 = ' '; 要查看模式中的所有表和FK:
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(); 要查看数据库中的所有FK:
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';记得!
这是使用InnoDB存储引擎.如果你在添加它们之后似乎无法显示任何外键,那可能是因为你的表正在使用MyISAM.
去检查:
SELECT * TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = ''; 要修复,请使用:
ALTER TABLE `` ENGINE=InnoDB;
如果在WHERE子句中指定k.TABLE_SCHEMA = DATABASE()和k.TABLE_NAME ='',则这些查询运行得更快(从2秒到0.0015秒),如此处所述http://dev.mysql.com /doc/refman/5.5/en/information-schema-optimization.html
很好的答案.你有MyISAM的解决方案吗?
不幸的是,MyISAM不支持外键.http://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html
5> ChrisV..:作为Node的答案的替代方案,如果你使用InnoDB并定义了FK,你可以查询information_schema数据库,例如:
SELECT CONSTRAINT_NAME, TABLE_NAME, REFERENCED_TABLE_NAME FROM information_schema.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '' AND TABLE_NAME = ' '
来自
的外键,或
SELECT CONSTRAINT_NAME, TABLE_NAME, REFERENCED_TABLE_NAME FROM information_schema.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '' AND REFERENCED_TABLE_NAME = ' '
对于
的外键
如果需要,还可以获取UPDATE_RULE和DELETE_RULE.
我个人更喜欢这个答案,因为使用REFERENTIAL_CONSTRAINTS表可以获得更新和级联规则.+1
6> Panayotis..:此解决方案不仅会显示所有关系,还会显示约束名称,这在某些情况下是必需的(例如,丢弃约束):
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';同样,对于特定的列名称,请添加
和table_name ='table_name
在查询结束时.
通过这篇文章的启发这里
7> Hazok..:使用REFERENCED_TABLE_NAME并不总是有效,并且可以为NULL值。以下查询可以代替:
select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = '';
推荐阅读
如何解决《获取IntelliJ以识别AnnotationProcessor生成的类》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何从spring数据代码中清晰地(物理地)分离域层?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用递归F#运行函数》经验,为你挑选了1个好方法。 ... [详细] 如何解决《是否可以从布局中获取视图名称?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Swift:使用FailableInitializer从JSON创建模型类》经验,为你挑选了1个好方法。 ... [详细] 如何解决《发送带有电子webview的发布请求》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么编程语言不使用简化的布尔表达式?》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何使用按钮启用/禁用文本框》经验,为你挑选了1个好方法。 ... [详细] 如何解决《对于标准库实现来说,专门化一个带有子概念的概念上的函数是否合法?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《如果我将JavaScript事件绑定到一个元素,然后删除该元素,该事件会发生什么?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《放大Chrome后,svg模式中的图像变得模糊》经验,为你挑选了0个好方法。 ... [详细] 如何解决《python中的文字是什么?》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何使用gitlab进行let的加密?》经验,为你挑选了3个好方法。 ... [详细] 如何解决《如何在bash数组的所有条目中用下划线替换空格》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Ember2:截断文本并添加省略号》经验,为你挑选了1个好方法。 ... [详细] 如何解决《休眠验证+自定义约束+java.lang.NullPointerException》经验,为你挑选了0个好方法。 ... [详细] 如何解决《你如何调试react-native使用的自定义android模块》经验,为你挑选了1个好方法。 ... [详细] 如何解决《npm递归更新包》经验,为你挑选了0个好方法。 ... [详细] 吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1如何在laravel的刀片文件中显示最新('updated_at')记录
- 2DbContext缓存
- 3有效地处理文本文件中的数据
- 4PUT的HTTP状态代码
- 5在rails视图中跳过迭代
- 6回归分析中的分类和序数特征数据表示?
- 7Matplotlib:其bbox中的中心文本
- 8如何在Xcode中调试ios的金属内核?
- 9反应原生的TextInput焦点样式
- 10containsTheSameElementsAs如何在specs2中工作
- 11在Delphi 10 Seattle上接收iOS推送通知
- 12在空内使用修剪
- 13如何跳过Perl中while循环中的迭代步骤?
- 14如何将其他参数传递给pyspark中用户定义的方法进行过滤方法?
- 15如何在SBT项目中列出活动插件?
- 16Android在Android UI中绘制圆角矩形
- 17如何创建未在类中指定的成员的对象?
- 18指针声明数组
- 19在ios9中,GCM注册尚未准备好使用auth凭据
- 20java中的immutable和final有什么区别?
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有