栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一文讲清楚mysql外键的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一文讲清楚mysql外键的使用

因为想学外键使用时找了好多博客都看不懂,各种地方没注解,看了视频才学懂,现在把视频内容总结成一个简单教程,帮助后人!

概念:

        设表A主键为aid,现有表B,在表B中设置一个属性,把这个属性定义为外键(关联表A,就是关联到A的主键),那么表B就称为子表,表A是主表(谁用外键谁是子表)。

        外键的本质就是当主表和子表进行关联,当主表发生改变时子表自动有相应的变化,最常用的还是通过外键做查询

使用条件:

        1、innodb引擎(mysql 5版本之前需手动设置,5版本以上为默认引擎)

        2、在表B中设置的即将被定义为外键的属性必须和表A主键类型一致(或能互相转换)

使用方式:(前提都是要关联的主表表A已经存在!)

        1、在创建表时使用

                create table t_b(

                         b_waijian int ,

                        constraint b_a //当有多个外键时,起个名字,可以这样理解!

                         foreign key(b_waijian) references t_a(id)

                        on delete cascade(这在设置当delete表A的id时,表B会发生什么,后面还有解释)

                        on update cascade(这在设置当update表A的id时,表B会发生什么)

      )

        2、在表已创建后使用

                alter table t_b add

                 constraint b_a //当有多个外键时,起个名字,可以这样理解!

                         foreign key(b_waijian) references t_a(id)

                        on delete cascade(这在设置当delete表A的id时,表B会发生什么,后面还有解释)

                        on update cascade(这在设置当update表A的id时,表B会发生什么)

        解释on dalete xxx

                xxx有三种:1. cascade(当表A的id被删除,表B的那行关联的记录直接也删除!)

                                     2、set null (当表A的id被删除,表B的那行关联的记录的外键属性设为NULL!)

                                        3、no action (当表A的id被删除,表B的那行关联的记录不发生任何改变!也就是只要表B有记录关联表A的主键,那么就不能删除这个主键)

                                        on update同理 !因为外键一般都关联主表主键,而主键不会经常修改,所以on update 用的频率很少!

        3、删除外键

                alter table t_b drop foreign key b_waijian

                

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292405.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号