当前位置:首页 > 技术笔记 > 正文内容

关于Mysql外键从新学习

皮皮豪1个月前 (03-03)技术笔记52

关于Mysql外键从新学习

参考:https://blog.csdn.net/u010373419/article/details/9321331

说实话,这是一个抄剩饭的文档。

为什么会从新学习外键

因为考试。

在实际开发中,可能用外键的情况不多,至少我设计我自己的项目是不会用外键。用了后,数据不自由了。当然,如果表设计后,给数据表加上外键,可能是一种不错的选择,但,自己的项目还是不会使用外键来约束自己的数据。至少我在代码中,做到部分的数据约束。

Mysql外键的关键

Innodb,如果引擎不是Innodb是无法添加外键的。我试了,一个小时,看了很多文档,然后51jb的网站一个文章讲了关于Innodb,必须是Innodb,否则外键的设置会失效。(虽然那个CSDN的博文也讲了,但我确实试了一个小时,总以为是我的代码的问题)

代码

建表

CREATE TABLE class(
id INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(20) NOT NULL
)ENGINE = INNODB DEFAULT CHARSET=utf8;

CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL,
cid INT NOT NULL,
CONSTRAINT stu_f_key FOREIGN KEY (cid) REFERENCES class(id) ON UPDATE CASCADE
)ENGINE = INNODB DEFAULT CHARSET=utf8;

# 插入数据
INSERT INTO class(cname) VALUES('计应1班'),('计应2班');
INSERT INTO student(sname,cid) VALUES('小皮',1),('小王',2);

image-20210302162447686

操作

因为使用了 on update cascade

使用,我们修改class的id,相应的student的cid也会改变

UPDATE class SET id = 3 WHERE id = 1;
SELECT * FROM student;

image-20210302162739782

关于on delete cascade

on delete xxx,on update xxx 属于级联操作,使用on delete时候要小心,因为如果使用on delete cascade ,如果删了class的实例,则会删除student的实例。

on delete set null。当外键所约束的实例被删除时,将当前实例的所有字段值设置为空。

总结

其实用级联很少,总是听别人说影响效率,当然,数据小的时候,不会出什么问题。如果数据大了,则需要优化数据库和查询语句。(不过这些目前我都没有学)。

扫描二维码推送至手机访问。

版权声明:本文由皮皮豪的个人网站发布,如需转载请注明出处。

本文链接:https://www.pipihao.com/667.html

标签: mysql
分享给朋友:
返回列表

上一篇:SpringBoot + Security学习笔记

没有最新的文章了...

相关文章

SpringBoot + Security学习笔记

SpringBoot + Security学习笔记

SpringSecurity学习笔记 本以为是总结,最后写成了笔记,所以还是需要更加的努力啊。 开始的时候看了一遍官方文档,然后只看懂了加密器。 然后又学了一个尚硅谷的视频,虽然这个教程是在讲一个项目,但我没有听懂(应该是我自己的问题)...

写了一个即时通讯客户端

写了一个即时通讯客户端

因为服务的源码不是我写的,所以我只能算是写了一个客户端而已,我的技术还是不行,写不了太强的东西,不过还是要务实的学习,不然做什么是觉得是浪费时间罢了。写代码是真的充实的一天啊,接下来,得通过这个看文档学习vue系了,加油啊皮皮豪!!...

皮皮豪用python制作的翻译小工具

皮皮豪用python制作的翻译小工具

在学完python的tkinter模块的时候,前辈叫我用tkinter与爬虫结合,然后我就自己写了个有道爬虫,有道很坏,不让爬,于是我就在网上寻找了破解教程,然后还是成功的做了出来了 教程录制之中,敬请期待 很坏,不让爬,于是...

皮皮豪使用python制作的截图识字工具1.0

皮皮豪使用python制作的截图识字工具1.0

视频教程链接地址:https://www.bilibili.com/video/av52108242/ 补漏:https://www.bilibili.com/video/av52108314/ python毕业快一周了,虽然...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。