MYSQL外键增删改查

下面亲自演示整个过程。

1.首先创建一个test表格


2. 查看test表字段属性


3. 创建fk_test表格, 其中FK_1是该外键的名称,后面再进行删除、修改等操作的时候会用到


4. 查看fk_test表格字段属性


   可以看到 course_id  的KEY属性为PRI,id的MUL属性为MUL

    PRI代表主键的意思,不可以重复。MUL表示可以重复。此外还有UNI,也是不可以重复。

5. 向fk_test中插入数据

    

   出现错误,原因在于id有外键约束,保证了fk_test和test数据的一致性,也就是说fk_test中每条记录的id的值必须是在test中出现的

6. 再次向fk_test中插入数据

    

    先在test中插入了一条记录,该记录的id值为1,再向fk_test中插入了id值为1的记录,成功。

7.  删除fk_test id的外键属性

     如果忘记了外键名可以通过

select * from information_schema.TABLE_CONSTRAINTS  t where t.TABLE_NAME='fk_test' and CONSTRAINT_TYPE='FOREIGN KEY';
进行查询,如下 constraint_name 为FK_1


删除操作语法

ALTER TABLE table-name DROP FOREIGN KEY key-name;
执行删除操作


执行完后查看列表属性,发现id的key属性仍然是MUL,但是此时往里面进行数据插入时约束已经取消了。

8. 给已经存在的字段增加外键属性

添加外键的操作

alter table table-name add constraint 外键名 foreign key(字段名) references 引用表明(字段名)


执行操作,报错,为什么呢?因为刚才插入了李四这条记录的操作,李四的id为2,而test里面是没有id为1的记录的,

这里要么删除fk_test里面李四这条记录要么在test里面增加id为2的记录

为了避免这种情况,一般我们会在外键设置时候加上级联属性  

alter table table-name add constraint 外键名 foreign key(字段名) references 引用表明(字段名) on delete cascade on update cascade;

删除了李四这条记录后,给id添加外键属性


查看外键


可以看到外键FK_2已经成功插入了





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值