加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql外键工具功能及操作方法

发布时间:2023-10-20 16:02:29 所属栏目:MySql教程 来源:
导读:外键定义:两个有关联关系的表,其中一个表中的某个字段a指向另一个表中的主键b,我们称a是外键。在它们两个的关系中,b所在表我们称之为主表,而a所在字段我们称之为从表。

如果没有定义两个表之间的关联操作,
外键定义:两个有关联关系的表,其中一个表中的某个字段a指向另一个表中的主键b,我们称a是外键。在它们两个的关系中,b所在表我们称之为主表,而a所在字段我们称之为从表。
 
如果没有定义两个表之间的关联操作,那么a只是逻辑上的外键,定义其之间的关联操作后,a才是我们今天要讨论的真正外键。
 
语法:foreign key (字段名) references 主表名 (字段名) on [update | delete]  [ cascade | set null | restrict ]
 
(1)可定义的级联操作:
 
on delete  定义当主表删除时记录时从表的操作
 
on update 定义当主表更新记录时执行的操作
 
(2)可设置的动作:
 
cascade : 串联操作,就是子表跟主表动作一样,删除或更新
 
set null : 当主表更改时,子表的外键字段设置为null
 
restrict : 限制主表做更改
 
mysql外键工具作用及操作方法
 
举例:
 
第一步:创建两张表 班级  和  学生,并且以class_id为外键对班级表关联。
 
create table class (
 
id int primary key auto_increment,
 
class_name varchar(20) not null
 
);
 
create table student (
 
id int primary key auto_increment,
 
name varchar(20) not null,
 
class_id int ,
 
foreign key (class_id) references class (id)
 
on delete cascade
 
on update set null
 
);
 
第二步:分别向两张表添加数据
 
insert into class values
 
(null,'A'),
 
(null,'B');
 
insert into student values
 
(null,'xiaohong',1),
 
(null,'xiaoming',2),
 
(null,'xiaogang',1);
 
此时我们首先看一下表中的数据,以便跟我们稍后的测验作数据对比。
 
第三步:删除和修改,并查看结果
 
刚才我们设置的是 on delete cascade,让我们来验证一下结果。
 
当我们删掉 class 表中的 id=1 的数据后,student 表中,class_id 为1的数据默认都帮我们删掉了。
 
再来一个更新的试试:
 
刚才我们设置的 on update set null
 
从数据中我们可以看到,当我们把class表中id=2的记录值的id改为3的时候,student表中class_id为2的记录class_id变为了null。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章