🔑 外联查询,就是把两张表按照某个条件合并成一张新表
- 比如说:学生数据,课程数据,班级数据,这些数据不可能全部写在同一张表里面,肯定是分成三张表,每张表只存对应的数据,当需要的时候,使用外联查询把这些数据串成一张某些字段我们需要的表
案例:
⭕️ 首先有下面三张表
- 学生表
c_s_uuid:学生唯一标识
c_s_name: 学生姓名
c_s_class: 所学课程的uuid
2.课程表
c_uuid: 课程唯一标识
c_name: 课程名
c_add: 上课地址唯一标识
3.上课地点表
c_d_uuid: 上课地点唯一标识
c_d_pos: 上课地点
⭐️ 需求:获取学生,学生上课地址两个字段的一张表(或者视图),如下图:
-
步骤一:先把学生表和课程表进行外联组合
SELECT * FROM c_student AS a LEFT JOIN c_leason AS b ON b.c_uuid = a.c_s_class
得到表:
-
步骤二:接下来用这张外联出来新表去外联上课地点表
SELECT * FROM c_student AS a LEFT JOIN c_leason AS b ON b.c_uuid = a.c_s_class LEFT JOIN c_address AS c ON c.c_d_uuid = b.c_add # 注意! 我们要外联的条件字段是从哪张表合并过来的, # 就去哪张表里取。虽然说外联之后得到了一张新的表,但是取新表的字段的时候,还是要从旧表里面找
得到表:
-
步骤三:从上面这张两次外联的表中得到字段数据,组成新的表(视图)
# 取的规则也是和外联的规则一样,虽然外联之后合并成了新表,但拿字段的时候还是要从字段来的那张表拿 SELECT a.c_s_name, # 学生姓名的字段在a表上 c.c_d_pos # 上课地点字段在c表上 FROM c_student AS a LEFT JOIN c_leason AS b ON b.c_uuid = a.c_s_class LEFT JOIN c_address AS c ON c.c_d_uuid = b.c_add
最后的结果: