目录
自连接查询
多表关系
项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各表结构之间也存在着各种联系,基本上分为三种:
- 一对多(多对一)
- 多对多
- 一对一
一对多案例
多对多案例
一对一案例
多表查询概念
概述:指的是从多张表中查询数据
笛卡尔积:笛卡尔乘积是指在数学中,两个集合,A集合与B集合的所有组合情况。(在多表查询中,需要消除无效的笛卡尔积)
补充:如果使用到了多表查询,那么多张表之间一定有着,直接或间接的连接条件
多表查询分类
-
连接查询
- 内连接:相当于查询A、B交集部分数据
- 外连接:
- 左外连接:查询左表所有数据,以及两张表交集部分数据
- 右外连接:查询右表所有数据,以及两张表交集部分数据
- 自连接:当前表与自身的连接查询,自连接必须使用表别名
-
子查询
如图所示:
内连接查询
内连接是查询两张表交集部分的数据
内连接查询语法:
隐式内连接:
SELECT 字段列表 FROM 表1,表2 WHERE 条件 ...;显示内连接:
SELECT 字段列表 FROM [INNER] JOIN 表2 ON 连接条件...;
注意事项:为什么叫内连接?
回答:内连接之所以称为"内",是因为它只关心哪些被连接的表中都存在的记录,也就是说,只有当两张表中的连接键完全相等时,才会被选入结果集中。因此他关注的是内部的,共同的,共享的数据部分。
核心知识点:
- 隐式内连接中,满足where 后的条件表达式 为 true 时,才会被查询出来。
- 显示内连接中,on 后的连接条件为 true时,才会被查询出来。
- 无论是显示内连接,还是隐式内连接,表达式的条件都可以有多个,但最后得到的值要么是false要么为true
- 结果只保留条件为true时数据