我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL外键级联的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL外键级联的实现

简介

mysql外键起到约束作用,在数据库层面保证数据的完整性。
例如使用外键的CASCADE(cascade串联)类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这个过程是数据库层面完成的。
早期企业系统数据库设计里面比较多,虽说帮程序员节省了delete、update操作,实际上增加了潜规则,也增加了软件复杂度,也会减弱性能。

所以在应用程序设计中,我们应尽量在应用层保证数据的完整性(如使用事务处理机制),而不是数据库层面。

下面对MySQL的外键进行介绍。

MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引子表在创建外键的时候也会自动创建对应的索引。

在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括

  • RESTRICT (restrict 约束 限制)
  • NO ACTION
  • SET NULL
  • CASCADE (串联)

RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新
CASCADE表示父表更新或者删除时,更新或者删除子表对应记录
SET NULL则是表示父表在更新或者删除的时候,子表的对应字段被SET NULL。

示例

因为只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎。

创建数据库:

Create database test;

一、首先创建两张表stu,sc

create table stu(
sid int UNSIGNED primary key auto_increment,
name varchar(20) not null)
TYPE=InnoDB charset=utf8;

create table sc(
scid int UNSIGNED primary key auto_increment,
sid int UNSIGNED not null,
score varchar(20) default '0',
index (sid),   --外键必须加索引
FOREIGN KEY (sid) REFERENCES stu(sid) ON DELETE CASCADE ON UPDATE CASCADE)
TYPE=InnoDB charset=utf8;

–说明: 外键必须建立索引;

FOREIGN key(sid) 设置外键,把sid设为外键

REFERENCES stu(sid) 引用作用。引用stu表中的sid

ON DELETE CASCADE 级联删除
ON UPDATE CASCADE 级联更新

二、向两张表插入数据

insert into stu (name) value ('zxf');
insert into stu (name) value ('ls');
insert into stu (name) value ('zs');
insert into stu (name) value ('ww');

insert into sc(sid,score) values ('1','98');
insert into sc(sid,score) values ('1','98');
insert into sc(sid,score) values ('2','34');
insert into sc(sid,score) values ('2','98');
insert into sc(sid,score) values ('2','98');
insert into sc(sid,score) values ('3','56');
insert into sc(sid,score) values ('4','78');
insert into sc(sid,score) values ('4','98');

MySQL外键级联的实现

注意:在sc表中插入数据时,若插入的sid为22,则会插入失败,违反外键约束,因为外键sid
来自stu表中的id的主键,即stu中的id没有等于22的数据。

级联删除:将stu表中id为2的学生删除,该学生在sc表中的成绩也会级联删除

delete from stu where sid = '2';

MySQL外键级联的实现

级联更新:stu表中id为3的学生更改为id为6,该学生在sc表中的对应id也会级联更新

update stu set sid=6 where sid='3';

MySQL外键级联的实现

注意

删除表的时候必须先删除外键表(sc),再删除主键表(stu)

MySQL外键级联的实现

上图为违反外键约束,不能删除

MySQL外键级联的实现

上图为正常删除,先删除sc表,再删除stu表!

到此这篇关于MySQL外键级联的实现的文章就介绍到这了,更多相关MySQL外键级联内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL外键级联的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL外键级联的实现

目录简介示例一、首先创建两张表stu,sc二、向两张表插入数据简介mysql外键起到约束作用,在数据库层面保证数据的完整性。例如使用外键的CASCADE(cascade串联)类型,当子表(例如user_info)关联父表(例如user)p
2022-07-28

MySQL外键关联操作的实现

目录mysql 的外键约束修改原有表的外键约束删除外键约束MySQL 的外键约束注意,MySQL 的 InnoDB 表引擎才支持外键关联,MyISAM 不支持。MySQL 还支持手动打开或关闭外键约束:SET FOREIGN_KEY_CH
2022-07-28

MySQL 外键关联策略

eg.一个用户可有拥有多个订单,一个订单只能属于一个用户,一对多,在tb_order中使用外键user_id关联tb_user的id。当删除、更新tb_user中的主键时,与之关联的tb_order要受到影响,比如#tb_user中的一条记录1 chy a
MySQL  外键关联策略
2018-05-20

mysql怎么设置主外键关联

在 mysql 中设置主外键关联需要遵循以下步骤:在子表中定义外键约束,指定外键列与主表中相关联的列;指定更新和删除操作时子表记录应如何处理;添加外键约束后,mysql 将强制执行数据完整性,确保子表中的记录始终与主表中的相关记录关联。如何
mysql怎么设置主外键关联
2024-05-22

MySQL怎么实现级联更新

MySQL可以通过使用外键约束和ON UPDATE CASCADE来实现级联更新。首先,创建表时需要设置外键约束,并设置ON UPDATE CASCADE。例如,假设有两个表:orders和customers,orders表中的custo
MySQL怎么实现级联更新
2024-04-09

mysql数据库实现超键、候选键、主键与外键的使用

目录1、超键(Superkey)2、候选键(Candidate Key)3、主键(Primary Key)4、外键(Foreign Key)1、超键(Superkey)超键是能唯一确定表中每行数据的属性集。它可以是单个属性或多个属性的组合
mysql数据库实现超键、候选键、主键与外键的使用
2024-09-30

如何让MySQL外键和主键自动关联起来?

如何让MySQL外键和主键自动关联起来?在MySQL数据库中,外键和主键是非常重要的概念,它们能够帮助我们在不同表之间建立关联关系,保证数据的完整性和一致性。在实际的应用过程中,经常需要让外键自动关联到对应的主键上,以避免数据不一致的情况
如何让MySQL外键和主键自动关联起来?
2024-03-15

mysql创建表怎么设置外键关联

在MySQL中,可以通过在创建表时使用FOREIGN KEY关键字来设置外键关联。下面是一个示例:```sqlCREATE TABLE 表名 (列1 数据类型,列2 数据类型,...FOREIGN KEY (列1) REFERENCES 另
2023-08-30

MySQL外键约束的实例讲解

MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化。从这个特点来看,它主要是为了保证表数据的一致性和完整性的。 对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是
2022-05-12

编程热搜

目录