MySQL(七)—— 外键使用

MySQL 外键约束详解 外键是表中的一个字段(或字段集合),它引用另一个表的主键或唯一键。外键约束用于确保引用完整性,保证数据的一致性和有效性。CREATE TABLE 子表名称 (列1 数据类型,列2 数据类型,...FOREIGN KEY (外键列) REFERENCES 父表名称(主键列)[ON DELETE 引用动作][ON UPDATE 引用动作] 阅读详情

目录

增加外键

修改外键&删除外键

外键作用

外键条件

外键约束


外键

外键: foreign key, 外面的键(键不在自己表中): 如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称之为外键.

增加外键

外键可以在创建表的时候或者创建表之后增加(但是要考虑数据的问题).

一张表可以有多个外键.

创建表的时候增加外键: 在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段)

-- 创建主键表
create table my_pri(
id int primary key auto_increment,
name varchar(20) not null
)charset utf8;

-- 创建外键表
create table my_foreign1(
id int primary key auto_increment,
name varchar(20) not null,
c_id int,
-- 增加外键
foreign key(c_id) references my_pri(id)
)charset utf8;

在新增表之后增加外键: 修改表结构

Alter table 表名 add [constraint 外键名字] foreign key(外键字段) references 父表(主键字段);

-- 创建表
create table my_foreign2(
id int primary key auto_increment,
name varchar(20) not null,
c_id int
)charset utf8;

-- 增加外键
alter table my_foreign2 add
-- 指定外键名
constraint foreign2_pri_1
-- 指定外键字段
foreign key(c_id)
-- 引用父表主键
references my_pri(id);

修改外键&删除外键

外键不可修改: 只能先删除后新增.

删除外键语法

Alter table 表名 drop foreign key 外键名; -- 一张表中可以有多个外键,但是名字不能相同

-- 删除外键 my_foreign1_ibfk_1是表my_foreign1的外键名
alter table my_foreign1 drop foreign key my_foreign1_ibfk_1;

外键作用

外键默认的作用有两点: 一个对父表,一个对子表(外键字段所在的表)

对子表约束: 子表数据进行写操作(增和改)的时候, 如果对应的外键字段在父表找不到对应的匹配: 那么操作会失败.(约束子表数据操作)

对父表插入数据进行查询

-- 插入数据
insert into my_pri values(1,'MYSQL'),(2,'PHP'),(3,'JAVA');
-- 查询数据
select * from my_pri;

-- 插入数据:外键字段在父表中不存在
insert into my_foreign2 values(null,'老林',4); -- 报错,没有主键4
insert into my_foreign2 values(null,'老赵',1); 
insert into my_foreign2 values(null,'老王',2); 
insert into my_foreign2 values(null,'老刘',2); 

 对父表约束: 父表数据进行写操作(删和改: 都必须涉及到主键本身), 如果对应的主键在子表中已经被数据所引用, 那么就不允许操作

-- 查询数据
select * from my_pri;
select * from my_foreign1;

-- 更新父表记录
update my_pri set id = 4 where id = 1; -- 失败: id=1记录已经被my_foreign1引用
update my_pri set id = 4 where id = 3; -- 可以: 没有引用

外键条件

  1. 外键要存在: 首先必须保证表的存储引擎是innodb(默认的存储引擎): 如果不是innodb存储引擎,那么外键可以创建成功,但是没有约束效果.
  2. 外键字段的字段类型(列类型)必须与父表的主键类型完全一致.
  3. 一张表中的外键名字不能重复.
  4. 增加外键的字段(数据已经存在),必须保证数据与父表主键要求对应.

外键约束

所谓外键约束: 就是指外键的作用.

之前所讲的外键作用: 是默认的作用; 其实可以通过对外键的需求, 进行定制操作.

外键约束有三种约束模式: 都是针对父表的约束

District: 严格模式(默认的), 父表不能删除或者更新一个已经被子表数据引用的记录

Cascade: 级联模式: 父表的操作, 对应子表关联的数据也跟着被删除

Set null: 置空模式: 父表的操作之后,子表对应的数据(外键字段)被置空

通常的一个合理的做法(约束模式): 删除的时候子表置空, 更新的时候子表级联操作

指定模式的语法

Foreign key(外键字段) references 父表(主键字段) on delete set null on update cascade;

-- 创建外键: 指定模式: 删除置空,更新级联
create table my_foreign3(
id int primary key auto_increment,
name varchar(20) not null,
c_id int,
-- 增加外键
foreign key(c_id)
-- 引用表
references my_pri(id)
-- 指定删除模式
on delete set null
-- 指定更新默认
on update cascade)charset utf8;

更新操作: 级联更新

删除操作: 置空

删除置空的前提条件: 外键字段允许为空(如果不满足条件,外键无法创建)

外键虽然很强大, 能够进行各种约束: 但是对于PHP来讲, 外键的约束降低了PHP对数据的可控性: 通常在实际开发中, 很少使用外键来处理.

 

ExpressLRS(ELRS)接收机技术全景:从历史演进、技术底层到产业生态全解析——上 ExpressLRS(ELRS)是一种由全球开源社区驱动的双向射频遥控链路协议栈,其接收机作为核心终端,承担信号接收解调、遥控指令解析、飞控数据交互与遥测回传等关键功能。自2018年问世以来,ELRS凭借极致性能、低成本、开放生态和强兼容性,从航模DIY方案发展为消费级无人机领域的事实标准,并逐步渗透工业级场景。 ELRS接收机采用模块化分层架构,支持2.4GHz和900MHz双频段,通过LoRa、FLRC、FSK多调制模式实现低延迟与远距离平衡。其核心技术包括自适应跳频抗干扰、TDD双向链路和极简数据包。 阅读详情

相关推荐

别再为H桥烧MOS管发愁了!手把手教你用IR2104搭建稳定电机驱动(附自举电路详解)

本文详细解析了使用IR2104半桥驱动芯片构建高可靠H桥电机驱动电路的全过程。从芯片内部架构、自举电路原理到PCB布局技巧和实战调试方法,帮助工程师彻底解决MOS管烧毁问题。重点讲解了自举电容选型、死区时间控制等关键设计要点,并附有示波器实测波形分析,是电机驱动设计的实用指南。

我的博客 739

mysql外键名_MySQL外键(foreign key)使用及说明详解

外键也称之为外键约束: foreign key外键: 外面的键, 一张表的一个字段(非主键)指向另外一个表的主键, 那么该字段就称之为外键.外键所在的表称之为子表(附表); 外键所指向的主键所在的表称之为父表(主表)一、增加外键将一个表的字段与另外一张表的主键进行关联(实体与实体之间的联系)增加外键有两种形式方案1: 在创建表的时候就增加外键: 在表字段之后使用foreign keyforeign...

weixin_29758513的博客 1万+

高德地图爬虫

高德地图爬虫 工具:Pycharm,win10,Python3.6.4 1.需求分析 这篇爬虫和上一篇百度地图爬虫要求一样,百度地图爬虫我发现有一个auth参数会一直变化,一旦变化则获取的数据是不准确的,所以我上高德地图看了一下,高德地图没有这个反爬机制。但是高德地图大概爬取120个页面就会跳一次验证码,我这里是通过换IP解决这个问题的。 2.数据准备 同样我们需要全国地级市信息,用之前...

123的博客 1万+

数据库——添加外键约束

添加外键约束名字一定不能重复

心若静#风奈何的博客 2万+

RK3576+IMX415 MIPI摄像头零拷贝显示系统

MIPI CSI-2是嵌入式视觉系统中主流的高速图像传感器接口标准,其核心价值在于低延迟、高带宽与硬件级DMA直通能力。基于V4L2子系统与DRM/KMS驱动栈,可构建从传感器RAW数据到帧缓冲区的零拷贝通路,显著降低CPU负载并提升实时性。该技术广泛应用于工业检测、边缘AI推理前数据接入及多路同步采集等场景。本文以Rockchip RK3576 SoC和索尼IMX415传感器为典型组合,详解MIPI物理层适配、内核驱动集成、GStreamer零拷贝管道搭建及systemd服务化部署,覆盖从硬件信号完整性到

weixin_36047538的博客 216

Stable Diffusion WebUI 安装前准备

大家好,我是水滴~~在安装 stable-diffusion-webui 前需要做一些准备工作,本篇文章主要介绍需要的电脑配置、魔法、安装 Python、安装 Git 等。

水滴的博客 2100

MySQL外键(详解)

MySQL外键(详解) 什么是外键:    外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接 一、主外键关系 在上图上涉及的两个表中,学生信息表 (stuInfo)为主表,学生 成绩表(score)为从表;那么主从表之间有什么关系呢? 1、当主表中没有对应的记录时,不能将记录添加到子表   --------学生成绩表中不能出现学生信息表中没有的学号 2、不能更

大佬云集技术答疑交流群:743262921(进群暗号:222) 2万+

Mamba-UNet:用于医学图像分割的类似UNet的纯视觉Mamba网络

所提出的Mamba-UNet的架构如图2所示,其灵感来源于UNet [24] 和 Swin-UNet [3]。首先将大小为 H × W × 1 的2D灰度图像分割成类似于ViT和VMamba的块 [5,16],然后转换为维度为 H/4 × W/4 × 16 的1D序列。一个初始的线性嵌入层将特征维度调整为任意大小C。这些块令牌随后通过多个VSS块和块合并层进行处理,以创建分层特征。块合并层负责下采样和维度增加,而VSS块则专注于学习特征表示。

AI浩 7549

mysql 外键参考栏位_MySQL基础之 外键参照讲解

外键:定义:如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。作用:外键是用来实现参照完整性的,不同的外键约束方式将可以是两张表紧密的结合起来。比如修改或者删除的级联操作等,外键主要用来保证数据的完整性和一致性。条件:1、创建外键的两个表,父表与子表必须是InnoDB存储引擎。2、创建外键的时候,父表要创建索引,一般为主键索引。子表在创建外键的时候也必须要创建索...

weixin_35260153的博客 1145

R语言实战应用精讲50篇(二)-多重线性回归系列之稳健回归

前言 线性回归的参数估计主要采用的是最小二乘法(又称最小平方法),该法是将使观测值与模型预测值之差的平方达到最小的值作为参数估计值。如果数据存在异常点或者异方差,最小二乘法估计会存在偏差,常用的处理策略就是改用稳健回归(Robust Regression)。 稳健回归就是采用更为稳健的参数估计方法来拟合模型,所谓稳健就是数据的波动对参数估计影响不大,比如不受异常值影响,或删除某一观测后对结果影响不大。稳健估计的方法有很多,主要有这么几类:最小绝对值回归(也称最小一乘法回归,lAV),最小中位数二乘法(L

wenyusuran的专栏 3160

海思芯片OpenHarmony系统移植:Sensor传感器模块HDF驱动配置HCS文件详解

海思系列芯片的传感器模块通过HDF(Hardware Driver Foundation)驱动框架进行管理和配置。传感器HCS(HDF Configuration Source)配置文件定义了各类传感器的硬件参数、总线配置、寄存器序列等信息,为传感器驱动提供必要的初始化和运行参数。海思系列芯片适配OpenHarmony的传感器HDF配置HCS文件是传感器驱动开发的关键部分,通过合理配置可以实现各种传感器设备的驱动支持。

m0_67505153的博客 208

外键的名字是不是和关联的那个键名字要一样

在数据库设计中,外键的名称和它所关联的主键的名称不必一样,但它们必须引用相同的数据类型和值。外键的主要目的是建立两个表之间的关联,确保数据的引用完整性。

m0_57236802的博客 1567

Python 爬虫实战:微博自动化运营工具(点赞 / 转发 / 评论 + 反封号策略)

微博作为中国最大的社交媒体平台之一,拥有庞大的用户群体和丰富的数据资源。通过 Python 爬虫技术,我们可以实现微博的自动化运营,包括点赞、转发、评论等功能,同时采取有效的反封号策略,确保账号的安全和稳定运行。

u014481728的博客 1177

SQL学习(七):MySQL外键约束四板斧

‌适用场景‌:新表结构设计时预置外键✅ OLTP系统必须启用外键约束✅ 禁止跨数据库外键(MySQL限制)✅ 生产环境禁用ON DELETE CASCADE✅ 定期执行外键校验(pt-table-checksum)

weixin_66348343的博客 1280

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MySQL实战七:你不知道的外键与约束使用!

MySQL学习仓库Up-Up-MySQL,这是一个学习MySQL从入门实战到理论完善,再到精通的一个仓库,后面会把MySQL的学习资料上传上去!欢迎大家star与fork...

Francis的博客 527

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

初学mysql数据库学习笔记(七)外键

1、什么是外键? 如果一个表的某个字段指向另一个表的主键,就称之为外键;被指向的表之为主表,也叫父表;那么另一个表就是从表,也叫子表。 2、那么,如果设置和使用一个外键呢? 我们通过一个例子来演示,两个表:一个是作者表 author_table;一个是文章表 article_table; 准备数据: ...

ann_198907的博客 469

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....

`约束`: - **什么是约束?** - - 约束是作用于表中字段上的规则,用于限制存储在表中的数据。 - - **约束的作用:** - - **保证数据库中数据的正确性、有效性和完整性。**

ebb29bbe的博客 641

mysql 外键使用时候注意,几点

一、如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。   一张表中可以有多个外键。   外键的默认作用有两点:   1.对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败。   2.对父表的作用:对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败。   外键的定制作用----三种约束模式...

qq_39822451的博客 970

MySql外键及其使用详细教程

MySQL外键(详解)_网易测试开发猿的博客-优快云博客_mysql外键MySQL外键(详解)什么是外键:   外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的,可以是空值,用来建立和加强两个表数据之间的连接一、主外键关系在上图上涉及的两个表中,学生信息表 (stuInfo)为主表,学生成绩表(score)为从表;那么主从表之间有什么关系呢?

优秀技术文章收录 1万+

Mysql外键的使用

Mysql外键的使用 外键是一个非常非常好用的一个东西,同时也是很多种关系数据库都有的一种功能,简单的来说就是可以将两张表之间建立一个关联,可以做到操作一张表的时候,另外一个表的数据也会同步发生变化。 例子: 一个学生表里面有学生的所有信息,其中有一个字段是班级id,又有一个班级表,记录着所有的班级信息,按照逻辑来说,如果我们删除了班级 表里面的某个班级,学生表里面是这个班级id的信息就应该修改。 以上的例子我们如果是使用程序是可以正常的完成的,先删除这个班级,再在学生表里将是这个班级的学生信息的班级

weixin_46240162的博客 8295

MYSQL如何使用外键

这里写自定义目录标题MYSQL如何使用外键一、增加外键二、删除外键三、外键作用四、外键约束新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 MYSQL如何使用外键 外键也称之为外键约束: foreign key 外键: 外面

yilufa666666的博客 1618

MySQL中的外键约束

在主表中添加的数据中,主键 deprno的值包含10、20、30、40和50,由于员工表cmp的外键引用部门表的主键deplto,因此在往员工表emp中添加数据时,其deptno字段的值只能是10、20、30、40和50,不能使用其他的值,具体语句如下。因为从表emp的外键列只能插入所引用的列(部门表的deptmo字段)中存在的值,所以如果要为两个数据表添加数据,就需要先为主表dept添加数据,插入数据的SQL语句如下。在多对一的表关系中,应该将外键添加在“多”的一方,否则会造成数据的冗余。

ZY_CREATE的博客 3549

MySQL 外键使用详解

MySQL 支持外键,允许在表之间进行相关数据的交叉引用,并有助于保持相关数据的一致性。一个外键关系涉及到一个父表,该父表保存初始列值,和一个子表,子表的列值引用父表的列值。外键约束定义在子表上。其中可以是: RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT。

jkzyx123的博客 2757

MySQL 外键-什么是外键?-为什么不能使用外键?

外键(Foreign Key)是关系型数据库中的一个重要概念。它是一种用于建立两个表之间关联的约束机制。例如,在一个电商系统中,有 “订单表” 和 “用户表”,“订单表” 中的 “用户 ID” 字段可以作为外键,它参照 “用户表” 中的 “用户 ID” 主键。通过这种方式,数据库可以保证数据的完整性和一致性。当我们在 “订单表” 中插入一条新订单记录时,其 “用户 ID” 必须是 “用户表” 中已经存在的有效用户 ID,否则数据库会拒绝插入操作。

weixin_69477306的博客 1384

mysql为何不建议使用外键

优快云首页 博客 课程 文库·商城 问答 社区 插件 认证 开源 mysql为何不建议使用外键 搜索 会员中心 足迹 动态 消息 创作 mysql为何不建议使用外键_为什么很多mysql课程不推荐用物理外键? 大机灵聪明绝顶 于 2021-01-18 21:21:46 发布 1408 收藏 文章标签: mysql为何不建议使用外键 版权 刚好今晚有师弟问我这个问题,就来搜搜。以前我对这个也是蛮困惑的。这一年来对这个问题感受比较深。 用外键的好处我就不多说了,既然是关系型数据库,外键的约束为我们保证了数据主

qq_40631247的博客 5195

MYSQL外键(Foreign Key)的创建及使用

在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;  3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换

常思考->有目标->重实践->善反思 1万+
上一篇: MySQL(六)—— 连接查询
下一篇: MySQL(八)—— 联合查询和子查询
爱做呢!~
博客等级 码龄10年 88粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值