数据库基础--MySQL多表查询之外键约束

MySQL多表关系

一对一

顾名思义即一个对应一个的关系,例如身份证号对于每个人来说都是唯一的,即个人信息表与身份证号信息表是一对一的关系。车辆信息表与车牌信息表也是属于一对一的关系。

一对多

即一个表当中的一个字段信息,对应另一张表多条信息。例如:一个班级可以拥有多个学生,即班级信息表与学生信息表是一对多关系(站在班级角度),即学生信息表的班级ID,与班级信息表的班级ID,站在班级的角度为一对多的关系。相似的关系还有部门信息表与员工表。

多对多

即信息之间的多对多的关系。举例:一名学生可以学习多门课程,而一门课程又可被多名学生选择,课程信息表与学生选课表之间即为多对多的关系。

主外键约束

主键约束

PRIMARY key,一般用来绑定一个非空字段。

外键约束

经常与主键约束一起用。对于两个有关联关系的表来说,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

创建外键约束

语法:Constraint 外键名称 FOREIGN KEY 关联字段 REFERENCES 主表名(关联字段)

代码示例

CREATE TABLE `TestMain`(
	`id` INT Not NULL AUTO_INCREMENT,
	 `name`VARCHAR(10),
	  `introduction` VARCHAR(255),
		PRIMARY KEY(`id`)
);

CREATE TABLE `Test`(
	`id` INT Not NULL AUTO_INCREMENT,
	 `name`VARCHAR(10),
	  `introduction` VARCHAR(255),
		`age` INT(3) DEFAULT '3',
		testid INT NOT NULL,
		PRIMARY KEY(`id`),
		CONSTRAINT TEST_ID FOREIGN KEY (testid) REFERENCES TestMain(id)
);

释义:Test表当中的testid字段,与TestMain表中的id字段为主外键关系。

测试:

首先向主表中插入两条数据

再向从表中尝试插入testid为3的数据:

尝试保存,结果报错,表示为一个外键约束错误,因为从表中的testid与主表的id为外键约束关系,即从表想要插入的testid,是主表中不存在的id的,则从表中的testid字段就会插入失败

此时我们将testid换为主表中存在的id,此时则插入成功

至此,我们可以看出外键约束的一个重要作用就是,防止用户插入无效数据。

验证外键约束

特点:

1.外键的值必须要在主表中存在(上述已验证)

2.主表当中一定要有值才能进行外键约束,如若主表为空表,则无法进行从表值的插入

3.删除外键约束:无法通过直接删除主表删除成功,因为从表中有对应数据关联着主表。故要想删除外键约束,必须先删除从表相关的数据,进而才能删除主表当中对应的数据。

写在最后

外键约束是MySQL应用中十分重要的一部分,在后期的项目开发过程中,涉及到多表关联的时候,外键约束会起到十分大的作用。就拿如今日常的外卖平台来说,就单单一个点单出单功能就有着外键约束的影子,用户订单表与商家订单表,两张不同的表,但用户下单后的订单号与商家接单的订单号一定是相同的,这里就有外键约束的影子,类似的运用还有很多很多。只要大家理解了外键约束,就能够慢慢的将其运用到实际项目当中去。笔者小,中,大厂均匀面试经历,每日分享JAVA全栈知识与相关面试题,希望能够与大家共同进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/591312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

黑马面试篇1

目录 一、面试准备 二、Redis篇 ​编辑1. 布隆过滤器: 2. 缓存击穿概念&解决方案 3. 双写一致 4. 持久化 1)RDB的执行原理? 2)AOF vs RDB 5. 数据过期策略 6. 数据淘汰策略 7. 分布式锁 8. Redis集群 1&#xff…

如何选择一个出色的APP内测分发平台 - 探讨小猪APP分发平台

在众多APP内测分发平台中如何选择一个出色的APP内测分发平台 - 探讨小猪APP分发平台,小猪APP分发平台(zixun.ppzhu.net)以其出色的服务和高效的推广机制成为行业佼佼者。 小猪APP分发平台的核心优势 小猪APP分发平台不仅以其用户友好的界面赢…

Coze扣子开发指南:搭建一个免费的微信公众号AI客服

运营微信公众号的自媒体,现在借助Coze扣子可以非常好用而且免费的7*24客服了,完全不需要任何编程基础,操作非常简单: 打开Coze扣子,新建一个bot,输入bot名称、功能介绍和图标: 选择大语言模型&…

论文笔记(四十五)Attention Is All You Need

Attention Is All You Need 文章概括摘要1. 介绍2. 背景3. 模型架构3.1 编码器和解码器堆栈3.2 Attention3.2.1 按比例点积Attention3.2.2 Multi-Head Attention3.2.3 注意力在模型中的应用 3.3 定位前馈网络3.4 嵌入与 Softmax3.5 位置编码 4 为什么 Self-Attention5. Trainin…

OpenWRT部署Zerotier虚拟局域网实现内网穿透

前言 细心的小伙伴肯定已经发现了:电脑上部署了Zerotier,如果路由器也部署了OpenWRT,那是否能远程访问呢? 答案是肯定的。 OpenWRT部署Zerotier有啥好处? 那好处必须多,其中的一个便是在外远程控制家里…

Win11安装Postgresql(更新于24.5)

Postgresql是一个功能强大的开源对象关系数据库系统,拥有超过 35 年的积极开发经验,这为其在可靠性、功能稳健性和性能方面赢得了良好的声誉。 1.安装程序下载 根据系统版本型号选择对应安装程序完成下载 网址: https://www.enterprisedb…

自定驾驶A*算法的思路

1. 背景 2 算法理论 2. 1.A*算法公式 2.2. H是不确定的 2.4. H使用的启发函数 2.5. 曼哈顿距离

电机控制系列模块解析(14)—— 脉冲频率/幅值/密度调制

一、脉冲序列调制(PSM) 脉冲宽度调制(PWM)、脉冲幅值调制(PAM)和脉冲密度调制(PDM)都是脉冲序列调制技术,它们通过改变脉冲信号的某一特性(宽度、幅值或密度…

机器学习每周挑战——二手车车辆信息交易售价数据

这是数据集的截图 目录 背景描述 数据说明 车型对照: 燃料类型对照: 老规矩,第一步先导入用到的库 第二步,读入数据: 第三步,数据预处理 第四步:对数据的分析 第五步:模型建…

深入了解 Arthas:Java 应用程序诊断利器

序言 在 Java 应用程序的开发和运维过程中,诊断和解决性能问题是一项非常重要的任务。而 Arthas 作为一款由阿里巴巴开发的 Java 应用程序诊断工具,提供了一系列强大的功能,帮助开发人员实时监控、诊断和调优Java 应用程序。本文将深入介绍 …

压缩机的实际制冷量

制冷压缩机是制冷系统的“心脏”,吸收来自蒸发器的制冷剂蒸气,提高压力后排气到冷凝器,使制冷剂在系统中循环流动。 按温度范围可以分为高温,中温,低温制冷压缩机。按密封结构形式分类为开启式;半封闭式&a…

深度学习每周学习总结P7(咖啡豆识别)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 –来自百度网盘超级会员V5的分享 数据链接 提取码:7zt2 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入及处理部分…

【Linux】学习笔记

文章目录 [toc]第一章:基础篇01|课程介绍02|内容综述03|什么是Linux04|Linux的内核版本及常见发行版内核版本发行版本Red Hat Enterprise LinuxFedoraCentOSDebianUbuntu 05|安装VirtualBox虚拟机VirtualBox下载url 06|在虚拟机中安装Linux系统Linux安装镜像下载 07…

020、Python+fastapi,第一个Python项目走向第20步:ubuntu 24.04 docker 安装mysql8、redis(一)

系列文章 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 docker安装起来比较方便,不影响系统整体,和前面虚拟环境有异曲同工之妙,今天把老笔记本T400拿出来装了个ubuntu24…

# 从浅入深 学习 SpringCloud 微服务架构(八)Sentinel(1)

从浅入深 学习 SpringCloud 微服务架构(八)Sentinel(1) 一、sentinel:概述 1、前言 – 服务熔断 Hystrix 的替换方案。 1)2018年底 Netflix 官方宣布 Hystrix 已经足够稳定,不再积极开发 Hys…

redis中的双写一致性问题

双写一致性问题 1.先删除缓存或者先修改数据库都可能出现脏数据。 2.删除两次缓存,可以在一定程度上降低脏数据的出现。 3.延时是因为数据库一般采用主从分离,读写分离。延迟一会是让主节点把数据同步到从节点。 1.读写锁保证数据的强一致性 因为一般放…

值得推荐的5个免费 PDF 转 Word 转换器分享

最好的免费 PDF 转 Word 转换器专注于两件事:范围和速度。 大多数 PDF 转换工具不限于一种文件类型 - 它们允许您将 PDF 转换为Microsoft Word,以及转换 Excel、Powerpoint 和其他 Office 应用程序(并再次转换回来)。最好的人很快…

C语言:指针详解(3)

目录 一、字符指针 二、数组指针 1.数组指针的定义 2.数组指针的初始化 3. 二维数组传参的本质 三、函数指针 1.函数指针的创建 2.函数指针的使用 3.有趣的代码(1) 4.有趣的代码(2) 四、typedef关键字 1.typedef的使用方法 2.typedef和#define的区别 五、函数指针…

社交媒体数据恢复:新浪微博

当我们在使用新浪微博时,可能会遇到一些意外情况,如误删微博、账号出现问题等。这时,我们需要进行数据恢复。本文将详细介绍如何在新浪微博中进行数据恢复。 首先,我们需要了解新浪微博的数据恢复功能。根据微博的帮助中心&#…

【智能算法应用】麻雀搜索算法求解非线性方程组问题

目录 1.算法原理2.数学模型3.结果展示4.代码获取 1.算法原理 【智能算法】麻雀搜索算法(SSA)原理及实现 2.数学模型 非线性方程组为: 2 x 1 − x 2 e − x 1 − x 1 2 x 2 e − x 2 (1) \begin{aligned}&2x_1-x_2e^{-x_1}\\&-…