乘风原创程序

  • mysql外键工具作用及操作方法
  • 2020/5/13 10:57:40
  • 下面一起来了解下mysql外键工具作用及操作方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql外键工具作用及操作方法这篇短内容是你想要的。

    外键定义:两个有关联关系的表,其中一个表中的某个字段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。

    看完mysql外键工具作用及操作方法这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。