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。 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐