Mysql数据库核心技术(二十一)添加与删除外键以及外键的使用方法

[复制链接]
查看: 1196|回复: 31
发表于 2023-1-19 19:58:46 | 显示全部楼层 | 阅读模式
使用外键的意义是:由于在实际工作中,我们在描述一个事物时需要建立多个字段,例如:我们要描述一件商品,可能需要几十个字段。然而将多个字段全部放入一张表中这会大大降低数据查询效率,所以我们常常会将一张表拆分成多张表来存放数据,比如:我们会将一些经常查询的字段放在一张表中,或者将所有字段进行分组后用多表存放等等,然后借助外键将这些表关联起来。
下面,我们就用最直白的方式来让大家彻底理解外键的操作方法:首先我们创建两张表
  1. create table stu888(`id`tinyint primary key,`name` varchar(10))engine=innodb;
  2. create table stu999(`id` tinyint primary key,`sid` tinyint,`age` tinyint)engine=innodb;
复制代码
Mysql数据库核心技术(二十一)添加与删除外键以及外键的使用方法
语句解释:
  1. engine=innodb --使用外键必须使用innodb引擎。
  2. stu888是主表,stu999是从表,主表的外键字段必须和从表关联字段的数据类型完全一致。
  3. 我们下面要实现的是:主表的id字段和从表的sid字段建立外键。
  4. 主表和从表都有id字段,全部设为主键。
  5. 从表中增加sid字段,数据类型和主表的id字段一致。
  6. 将从表的sid字段和主表的id字段关联为外键,删除置空,更新级联。
复制代码

操作如下:
  1. alter table stu999 add foreign key(sid) references stu888(id) on delete set null on update cascade;
复制代码
语句解释:
  1. alter table stu999 add foreign key(sid) --给stu999表的sid字段添加外键,foreign key为外键关键词。
  2. references stu888(id) --关联stu888表的id字段,references为关键词。
  3. on --设置外键属性。
  4. delete set null --删除置空。
  5. update cascade --更新级联。
复制代码
操作结果如下:
Mysql数据库核心技术(二十一)添加与删除外键以及外键的使用方法

  1. constraint --限定条件
  2. stu999_ibfk_1 --外键的名称
复制代码


下面我们分别给主表和从表插入数据:

  1. insert into stu888 values(1,'张三'),(2,'李四');
  2. insert into stu999 values(1,1,33),(2,2,44);
复制代码
Mysql数据库核心技术(二十一)添加与删除外键以及外键的使用方法

下面我们修改主表stu888中name为李四的数据id为3,按照更新级联的原理,修改stu888表后stu999的sid字段也会自动更新为3,我们测试一下是否是这样呢
  1. update stu888 set id=3 where name='李四';
复制代码
Mysql数据库核心技术(二十一)添加与删除外键以及外键的使用方法

实验结果完全符合我们的预期。
下面我们删除主表stu888中id为1的数据行,看一下从表stu999会发生什么变化。按照删除置空的原理,本操作后stu999表中sid为1的数据会置空,我们测试一下是否是这样呢
  1. delete from stu888 where id=1;
复制代码
Mysql数据库核心技术(二十一)添加与删除外键以及外键的使用方法
实验结果完全符合我们的预期。


ok,以上就是外键的全部使用方法。
下面我们使用sql语句将已添加的外键删除
  1. alter table stu999 drop foreign key `stu999_ibfk_1`;
复制代码
执行结果如下:
Mysql数据库核心技术(二十一)添加与删除外键以及外键的使用方法

外键已经消失了。

好了,下面大家自己测试一下,一定要多多练习。

易博软件介绍
发表于 2023-1-30 23:08:41 | 显示全部楼层
感谢楼主,又涨知识了。
发表于 2023-1-31 06:43:57 | 显示全部楼层
少有的看了不犯困的教程,浅显易懂,非常好
发表于 2023-1-31 14:17:06 | 显示全部楼层
看到这篇文章后顿时萌生了学好mysql的念头。

0

主题

25

帖子

13

积分

终身会员

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

积分
13
发表于 2023-2-1 03:49:44 | 显示全部楼层
没有多年的实战经验讲不到这种程度,确实不错。
发表于 2023-2-1 18:52:11 | 显示全部楼层
之前懵懵懂懂,看了这篇教程恍然大悟~
发表于 2023-2-2 09:56:49 | 显示全部楼层
呦西,原来如此

3

主题

185

帖子

99

积分

终身会员

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

积分
99

终身会员

发表于 2023-2-3 02:01:22 | 显示全部楼层
我又来卷了

0

主题

14

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-16 01:52:44 | 显示全部楼层
难得一见的一看就懂的好教程,给力

0

主题

10

帖子

6

积分

营销入门

Rank: 2

积分
6
发表于 2023-2-18 19:26:58 | 显示全部楼层
难得一见的好教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表