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

news2024/5/18 13:46:26

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全栈知识与相关面试题,希望能够与大家共同进步。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据库原理及应用】期末复习汇总高校期末真题试卷02

试卷 一、填空题 数据库系统是指计算机系统中引入数据库后的系统,一般由数据库、________、应用系统、数据库管理员和用户构成。当数据库的存储结构发生了改变,由数据库管理员对________映象作相应改变,可以使________保持不变,…

vue快速入门(五十一)历史模式

注释很详细,直接上代码 上一篇 新增内容 历史模式配置方法 默认哈希模式,历史模式与哈希模式在表层的区别是是否有/#/ 其他差异暂不深究 源码 //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import m…

从零开始学AI绘画,万字Stable Diffusion终极教程(一)

【第1期】SD入门 2022年8月,一款叫Stable Diffusion的AI绘画软件开源发布,从此开启了AIGC在图像上的爆火发展时期 率先学会SD的人,已经挖掘出了越来越多AI绘画有趣的玩法 从开始的AI美女、线稿上色、真人漫改、头像壁纸 到后来的AI创意字、AI…

华为eNSP小型园区网络配置(上)

→跟着大佬学习的b站直通车← 目标1:dhcp分配ip地址 目标2:内网用户访问www.yzy.com sw1 # vlan batch 10 # interface Ethernet0/0/1port link-type accessport default vlan 10 # interface Ethernet0/0/2port link-type trunkport trunk allow-pass…

oracle pl/sql 如何让sql windows 显示行号

oracle pl/sql 如何让sql windows 显示行号 下载最新版的pl/sql第一步,在preferences中对sql Windows进行设置,如下所示第二步,在preferences中对User interface进行设置,如下所示结果如下当然,还可以通过右键选择是否…

iptables---防火墙

防火墙介绍 防火墙的作用可以理解为是一堵墙,是一个门,用于保护服务器安全的。 防火墙可以保护服务器的安全,还可以定义各种流量匹配的规则。 防火墙的作用 防火墙具有对服务器很好的保护作用,入侵者必须穿透防火墙的安全防护…

【大模型学习】私有大模型部署(基础知识)

私有大模型 优点 保护内部隐私 缺点 成本昂贵 难以共享 难以更新 大模型底座 基础知识点 知识库 知识库是什么? 知识库的作用是什么? 微调 增强大模型的推理能力 AI Agent 代理,与内部大模型进行交互 开源 and 闭源 是否可以查…

二叉树的实现(详解,数据结构)

目录 一,二叉树需要实现的功能 二,下面是各功能详解 0.思想: 1.创建二叉树结点: 2.通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 3.二叉树销毁: 4.前序遍历: 5.中序遍历:…

QT5之布局操作

目录 实验之前的前提 局部布局和整体布局定义 快捷工具 水平和垂直布局 水平布局 在对象区域可以看出三个已经被水平布局在一起 在对象区域选中布局,点击工具取消当前布局 可以将两个小局部进行大局部布局 网格布局 弹簧布局 分割器布局 器件对齐边距 也…

Java Map集合(一)

1. Map接口 1.1 Map接口概述 Map接口是一种双列集合。Map的每个元素都包含一个键对象Key和一个值对象Value ,键对象和值对象之间存在对应关系,这种关系称为映射(Mapping)。 Map接口中的元素,可以通过 key 找到 value&…

STD10A230XCB电源模块STD05A230XCB整流模块介绍

STD10A230XCB电源模块STD05A230XCB整流模块介绍,直流屏电源模块STD05A230XCB,整流模块STD10A115XCB,STD20A115XCB,STD10A230X,STD05A230X,直流屏充电模块的关键词: 电力智能高频开关充电模块STD20A230XCB,高…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

Golang Colly爬取图片gorm存储数据

语言:Golang 库:Iris/Colly/gorm 运行结果 text/html; charset=utf-8 It is image 20240429222029_0_0.jpg Saved file: images\20240429222029_0_0.jpg text/html; charset=utf-8 It is image 20240429222030_1_0.jpg Saved file: images\20240429222030_1_0.jpg It is ima…

遭遇“U盘只剩USBC乱码”危机?这里有你需要的解决方案!

当你满心期待地将U盘插入电脑&#xff0c;准备读取或传输文件时&#xff0c;突然发现U盘中的文件名全部变成了乱码&#xff0c;尤其是当这些乱码以“USBC”开头时&#xff0c;你可能会感到惊慌失措。这种情况不仅影响你的工作效率&#xff0c;还可能导致重要数据的丢失。那么&a…

一键解决!Microsoft VB/VC 微软常用运行库全版本整合包组件可选 v240329

01 软件介绍 众多程序的正常运行&#xff0c;依赖于微软的运行库。而运行库包括多种类型&#xff0c;如VB&#xff08;Visual Basic&#xff09;和VC&#xff08;Visual C&#xff09;&#xff0c;并且涵盖了不同的版本。鉴于此&#xff0c;整合版的运行库合集提供了一种高效的…

修改 Windows 服务器远程端口,以阿里云服务器 ECS 为例

一、WinR - mstsc.exe 登录远程服务器 二、WinR - regedit.exe 打开注册表 三、打开注册表 tcp 路径&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp 双击右侧 PortNumber 子健&#xff0c;勾选十进制&a…

每日一题(AL001):A+B Format--字符串处理

找输出的顺序很重要&#xff1a; #include<bits/stdc.h> using namespace std; int main(){int a,b;cin>>a>>b;int sumab;if(sum0) cout<<0;bool ftrue;vector<char> v;if(sum<0) {ffalse; sum-sum;}while(sum>0){char cstatic_cast<c…

知识图谱推动条件

文章目录 计算设备及硬件的发展可用数据规模的提升算法演进数据/知识检索需求攀升开源知识库建设专业人才培养 计算设备及硬件的发展 知识图谱的发展离不开计算硬件的支撑&#xff0c;特别是知识图谱构建、推理、应用过程中的机器学习算法的训练和预测等过程&#xff0c;对计算…

《网络安全技术 网络安全众测服务要求》

近日&#xff0c;全国网络安全标准化技术委员会发布《网络安全技术 网络安全众测服务要求》&#xff08;GB/T 43741-2024&#xff0c;以下简称“众测服务要求”&#xff09;&#xff0c;并将在2024年11月1日正式实施。 《众测服务要求》确立了网络安全众测服务的角色及其职责&…

二维偏序 + LIS, CF 1575L Longest Array Deconstruction

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1575L - Codeforces 二、解题报告 1、思路分析 我们考虑最终 …