Mysql多表查询

'''
缺陷:
1.表的重点不清晰,到底是员工表还是部门表
2.表中的相关字段一直在重复存储
3.表的扩展性极差,牵一发而动全身

解决方式:
将上述一张表拆分成两张表,上述三个缺陷全部解决
这时我们拆分后可以使用外键,使表与表之间建立连接
'''
那么表与表之间怎么建立联系呢?往下看

表与表之间的关系

外键约束的使用:通过建立员工表喝部门表之间的关系,解决了数据重复和部门名重复修改的问题

表与表之间的关系叫:foreign key,外键约束
外键约束可以减少冗余和修改的麻烦
使用外键约束可以避免大量的重复信息和硬盘空间浪费

一对多表的关系:

'如何判断表关系:换位思考'
以员工表和部门表为例:
先站在员工表:一个员工不能有多个部门
再站在部门表:一个部门可以有多个员工
'针对一对多,外键字段要建在多的一方'

在SQL层面建立一对多的关系,先把基础表中的基础字段建立出来,然后再考虑外键字段

这里举例: 员工表和岗位表
如果创建表与表之间的关系,必须先建立岗位表
image
image

多对多的关系

以图书表和坐着表为例
站在图书表的角度:一本书可以有多个作者
站在作者的角度:一个作者可以有多本书
'针对多对多的关系,表建立再第三张表中'
image
image

一对一

以作者表和作者详情表为例
外键关系一般建立在查询频率较高的一张表
下面请看案例:
image
image

注意事项

1.在创建表时,先创建被关联表(没有外键字段的表)
2.在插入数据时,先确保被关联表中没有数据
3.在插入新数据时,外键字段只能填写被关联表中已经存在的数据

多表查询

'在此之前都是单表下的查询'
多表查询的思路:
1.子查询:一条SQL的执行结果就是另外一条SQL的执行条件
image

2.联合查询:多个表的字段数量相同,字段名和数据类型可以不同,但一般数据类型是相同的
image

3.内连接:取多个表的交集,就是取两张表中都有的数据
image

4.左连接:以左表为基准,查询左表中所有的数据,右表没有的数据用NULL填充
image

右连接:以右表为基准
image

posted @   家购诗  阅读(4)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示