Mysql多表查询
'''
缺陷:
1.表的重点不清晰,到底是员工表还是部门表
2.表中的相关字段一直在重复存储
3.表的扩展性极差,牵一发而动全身
解决方式:
将上述一张表拆分成两张表,上述三个缺陷全部解决
这时我们拆分后可以使用外键,使表与表之间建立连接
'''
那么表与表之间怎么建立联系呢?往下看
表与表之间的关系
外键约束的使用:通过建立员工表喝部门表之间的关系,解决了数据重复和部门名重复修改的问题
表与表之间的关系叫:foreign key,外键约束
外键约束可以减少冗余和修改的麻烦
使用外键约束可以避免大量的重复信息和硬盘空间浪费
一对多表的关系:
'如何判断表关系:换位思考'
以员工表和部门表为例:
先站在员工表:一个员工不能有多个部门
再站在部门表:一个部门可以有多个员工
'针对一对多,外键字段要建在多的一方'
在SQL层面建立一对多的关系,先把基础表中的基础字段建立出来,然后再考虑外键字段
这里举例: 员工表和岗位表
如果创建表与表之间的关系,必须先建立岗位表
多对多的关系
以图书表和坐着表为例
站在图书表的角度:一本书可以有多个作者
站在作者的角度:一个作者可以有多本书
'针对多对多的关系,表建立再第三张表中'
一对一
以作者表和作者详情表为例
外键关系一般建立在查询频率较高的一张表
下面请看案例:
注意事项
1.在创建表时,先创建被关联表(没有外键字段的表)
2.在插入数据时,先确保被关联表中没有数据
3.在插入新数据时,外键字段只能填写被关联表中已经存在的数据
多表查询
'在此之前都是单表下的查询'
多表查询的思路:
1.子查询:一条SQL的执行结果就是另外一条SQL的执行条件
2.联合查询:多个表的字段数量相同,字段名和数据类型可以不同,但一般数据类型是相同的
3.内连接:取多个表的交集,就是取两张表中都有的数据
4.左连接:以左表为基准,查询左表中所有的数据,右表没有的数据用NULL填充
右连接:以右表为基准
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)