一文讲清楚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

                

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值