大家好,关于很难区分与SQL 相关的各种JOIN 之间的区别。刚读完这篇文章。很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
选择“name”作为篮球名称;
1. LEFT JOIN 左连接
–代表查询所有踢足球的学生的篮球成绩
选择[列]
从足球a
左连接篮球b
在a.`name`=b.`name` 上;
结果就是以足球为主表关联篮球,即A区+B区数据记录。如果篮球表中没有匹配的数据,则显示NULL。结果,李四和赵六在篮球表中都没有记录,则对应的Field为空。数据行总数为5行。
2. RIGHT JOIN 右连接
— 代表查询所有篮球学生的足球成绩
选择[列]
从足球a
右联篮球b
在a.`name`=b.`name` 上;
结果就是以篮球为主表关联足球,即B区+C区数据记录。如果足球表中没有匹配的数据,则显示NULL。结果,钱霸在足球榜上没有记录,对应的字段将为空。数据行总数为4行。
3. INNER JOIN 内连接
— 代表既踢足球又踢篮球的学生
选择[列]
从足球a
INNER JOIN 篮球b
在a.`name`=b.`name` 上;
结果是内连接左右两侧的记录,即两个圆的交集,即B区的数据记录。数据行总数为3行;如果没有交集区域,则结果集为空。
4. 左连接- 内连接左连接- 内连接
–代表除打篮球的学生外所有踢足球的学生
选择[列]
从足球a
左连接篮球b
在a.`name`=b.`name` 上
其中b.`name` 为NULL;
结果就是以足球桌为主表关联篮球桌,即踢足球的学生(A区+B区)。打篮球的同学(B区)被淘汰,即剩下A区,总数据行为2 OK。
5. RIGHT JOIN – INNER JOIN 右连接- 内连接
–代表除踢足球的学生外所有打篮球的学生
选择[列]
从足球a
右联篮球b
在a.`name`=b.`name`
其中a.`name` 为NULL;
结果就是以篮球桌为主桌关联足球桌,即打篮球的学生(C区+B区)。踢足球的学生部分(B区)被淘汰,即剩下C区,总数据行为1 OK。
6、FULL OUTER JOIN全连接(注:mysql不支持,oracle支持)
——代表所有打篮球或踢足球的人,
–oracle代码如下
选择[列]
从足球a
全外连接篮球架
在a.`name`=b.`name` 上;
— mysql可以灵活实现
— 1. LEFT JOIN + (RIGHT JOIN – INNER JOIN)方法,代码如下
选择[列]
从足球a
左连接篮球b 于a.`name`=b.`name`
联盟
选择[列]
从足球a
右连接篮球b 于a.`name`=b.`name`
其中a.`name` 为NULL
— 2.RIGHT JOIN + (LEFT JOIN – INNER JOIN)方法,代码如下
选择[列]
从足球a
右连接篮球b 于a.`name`=b.`name`
联盟
选择[列]
从足球a
左连接篮球b 于a.`name`=b.`name`
其中b.`name` 为NULL;
即打篮球的学生和踢足球的学生的集合(A区+B区+C区),记录行总数为6行。
7. 全外连接- 内连接
— 代表所有只打篮球或踢足球的学生
— 甲骨文版本
选择[列]
从足球a
FULL OUTER JOIN 篮球b on a.`name`=b.`name`
其中1=1
并且(a.`name` 为null 或b.name 为null)
–mysql版本
从( 中选择b.`name`
选择一个“名称”
从足球a
左连接篮球b 于a.`name`=b.`name`
联盟
选择b.`名称`
从足球a
右连接篮球b 于a.`name`=b.`name`
其中a.`name` 为NULL
) b 左连接(
选择名称
从足球a
INNER JOIN 篮球b
在a.`name`=b.`name`
) d on b.name=d.name
其中d.name 为空;
即只打篮球的学生和只打足球的学生合并起来(A区+C区),总记录行数为3行。
8. 加入
— 笛卡尔积,5*4
— 例如:班级学生表student与课程表course的笛卡尔积的效果是,班级内每个学生的每一门课程都被视为一条记录。
— 表记录较多请谨慎使用!
选择[列]
来自学生a
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/121221.html
用户评论
半梦半醒i
这篇文章太棒了!终于理解了各种类型的 JOIN 的区别,以前总是混淆使用……感谢作者的耐心讲解!
有20位网友表示赞同!
纯真ブ已不复存在
我之前也常常被这些 JOIN 语句搞得头疼。文章用得很通俗易懂的例子解释,真希望能早点看到这篇文章!
有6位网友表示赞同!
玩味
别的地方看了各种SQL教程都觉得晦涩难懂,这篇写得太棒了!逻辑清晰,图文结合很好理解各种JOIN类型。
有8位网友表示赞同!
墨城烟柳
作者的分析很到位,把不同 JOIN 的使用场景都总结得很清楚,特别是 INNER JOIN 和 LEFT JOIN 的区别简直就是我心结终于解开的时刻!
有5位网友表示赞同!
神经兮兮°
哈哈,刚开始学SQL的时候我也是被这些JOIN搞得晕头转向的。现在看来其实道理很简单,只是需要好好梳理一下。
有11位网友表示赞同!
那伤。眞美
说的对啊!虽然各种 JOIN 语句确实会让初学者感到迷惑,但只要掌握了它们的用法和区别,其实并不复杂。
有8位网友表示赞同!
惦着脚尖摘太阳
虽然我觉得这篇博客很实惠的,但是例子太简单了,没有遇到实际开发场景下使用的JOIN 。
有15位网友表示赞同!
Edinburgh°南空
INNER JOIN 用来找匹配的记录,LEFT JOIN 用找左边关系数据的所有记录,好像很容易理解,可是为什么总会有错误?
有17位网友表示赞同!
一别经年
其实我觉得文章里的解释很清晰了,只是自己缺乏实践经验,所以还是不太能完全理解不同场景下应该使用什么 JOIN 语句。
有15位网友表示赞同!
经典的对白
建议作者能增加一些更复杂、实际应用的例子来帮助更好地理解。比如可以加入多个表的JOIN查询案例,让读者更加全面地认识这些 JOIN 语句的运用技巧。
有7位网友表示赞同!
病房
我感觉这种简单化学习方式对入门确实有帮助,以后多做练习,相信就能够掌握各种 JOIN 的用法了。
有19位网友表示赞同!
不浪漫罪名
说的不错!我之前也常把这些JOIN语句搞混,幸好看了你的文章才算是理清思路。
有14位网友表示赞同!
泪湿青衫
这篇文章很有帮助,让我能快速入门SQL的关联查询,以后写数据库程序就不会那么费神啦!
有19位网友表示赞同!
走过海棠暮
我觉得这种通俗易懂的方式讲解的确对新手十分友好,尤其是我刚 empezar学习 SQL 的时候,遇到各种 JOIN 语句确实十分困惑,有了这份文章就豁然开朗了。
有12位网友表示赞同!
暖瞳
但对于更深层级的数据库开发场景,我想这篇文章可能并不太详细,需要更多的实践和学习来深入理解不同JOIN语句的使用技巧
有16位网友表示赞同!
麝香味
总体来说,这篇博客帮助我理清了各种 JOIN 的区别,对SQL的学习很有帮助!
有10位网友表示赞同!
强辩
感谢作者的分享,让更多人能够轻松理解 SQL 连接查询的知识。
有20位网友表示赞同!