一、数据集合不同
1、左外连接:是A和B的交集再并上A的所有数据。
2、右外连接:是A和B的交集再并上B的所有数据。
二、语法不同
1、左外连接:SELECT *FROM aLEFT OUTER JOIN bON a.`ageId` = b.`id`。
2、右外连接:SELECT *FROM aright OUTER JOIN bON a.`ageId` = b.`id`。
三、运算方式不同
1、左外连接:其运算方式为:A左连接B的记录=图3公共部分记录集C+表A记录集A1。
2、右外连接:其运算方式为:A右连接B的记录=图3公共部分记录集C+表B记录集B1 。
参考资料来源:百度百科-right join
参考资料来源:百度百科-外连接
1、依据上的区别
①前者基于SELECT *FROM aLEFT OUTER JOIN bON a.`ageId` = b.`id`;
②后者基于SELECT *FROM aright OUTER JOIN bON a.`ageId` = b.`id`。
2、公式上的区别
①前者按照该方法来进行计算:A左连接B的记录=公共部分记录集C+表A记录集A1;
②后者按照该方法来进行计算:A右连接B的记录=公共部分记录集C+表B记录集B1 。
3、范围上的区别
①前者属于A和B的交集再并上A的所有数据;
②后者属于A和B的交集再并上B的所有数据。
sql的其他连接类型
1、sql内连接
包括相等连接和自然连接,使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。
2、sql交叉连接
也称作笛卡尔积,使FROM子句中的表或视图可通过内外连接按任意顺序指定。但是,用外连接指定表或视图时,表或视图的顺序很重要。
两个表:
A(id,name)
数据:(1,张三)(2,李四)(3,王五)
B(id,name)
数据:(1,学生)(2,老师)(4,校长)
左连接结果:
select A.*,B.* from A left join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
3 王五 NULL NULL
右链接结果:
select A.*,B.* from A right join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
NULL NULL 4 校长
****************
补充:下面这种情况就会用到外连接
比如有两个表一个是用户表,一个是交易记录表,如果我要查询每个用户的交易记录就要用到左外外连接,因为不是每个用户都有交易记录。
用到左外连接后,有交易记录的信息就会显示,没有的就显示NULL,就像上面我举得例子一样。
如果不用外连接的话,比如【王五】没有交易记录的话,那么用户表里的【王五】的信息就不会显示,就失去了查询所有用户交易记录的意义了。
****************
看一下结果就能明白左右连接的区别了。
学习了。
左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。
左联接的结果集包括 LEFT 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
右联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。