MySQL的七种join(个人总结)

    声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出
七种join:
![在这里插入图片描述](https://img-blog.csdnimg.cn/737bc57e424e4136b7addbb736c6d9e4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGVhcm5lcnNyYw==,size_20,color_FFFFFF,t_70,g_se,x_16

案例测试:
1. 表结构以及数据准备:

  1. teacher表
    在这里插入图片描述
  2. student表
    在这里插入图片描述
    通过表可以看出:
         张老师 有学生
         李老师 没学生
         小明 有老师
         小红 没老师

2. 六个案例需求:

需求1: 查出所有符合常情的老师和学生,(老师有学生,学生有老师), 即内连接

SELECT teacherName, studentName
FROM teacher
JOIN student ON teacher.teacherId = student.teacherId;

需求2: 查出所有老师,顺带查出他们的学生(无论有没有学生都要查出这个老师), 即外连接

SELECT teacherName, studentName
FROM teacher
LEFT JOIN student ON teacher.teacherId = student.teacherId;

SELECT teacherName, studentName
FROM student
RIGHT JOIN teacher ON teacher.teacherId = student.teacherId;

需求3: 查出没有学生的老师

SELECT teacherName, studentName
FROM teacher
LEFT JOIN student ON teacher.teacherId = student.teacherId
WHERE student.teacherId IS NULL;

需求4: 查出没有老师的学生

SELECT teacherName, studentName
FROM teacher
RIGHT JOIN student ON teacher.teacherId = student.teacherId
WHERE student.teacherId IS NULL;

需求5: 查出所有老师和学生, 即全连接

SELECT teacherName, studentName
FROM teacher
LEFT JOIN student ON teacher.teacherId = student.teacherId
UNION
SELECT teacherName, studentName
FROM teacher
RIGHT JOIN student ON teacher.teacherId = student.teacherId
WHERE student.teacherId IS NULL;

需求6: 查出没有老师的学生 和 没有学生的老师

SELECT teacherName, studentName
FROM teacher
LEFT JOIN student ON teacher.teacherId = student.teacherId
WHERE student.teacherId IS NULL
UNION
SELECT teacherName, studentName
FROM teacher
RIGHT JOIN student ON teacher.teacherId = student.teacherId
WHERE student.teacherId IS NULL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值