全外连接、左外连接和右外连接区别(含举例)

全外连接是左外连接和右外连接的结合。

左外连接和右外连接的区别如下:

  • 1、数据集合上的区别
    (1)左外连接:是A与B的交集,然后连接A的所有数据。
    (2)右外连接:是A与B的交集,然后连接B的所有数据。

  • 2、计算方法上的区别
    (1)左外连接:计算方法是,A左连接B记录=表3的公用记录集C +表A的记录集A1。
    (2)右外连接:计算方法是,A右连接B记录=图3公共部分记录集C +表B记录集B1。
    在这里插入图片描述

例子:

  a表     id       name         b表     id   job   parent_id   
   		  1        张3             	    1     23       1   
 	      2        李四          		2     34       2   
  		  3        王武          		3     34       4       

a.id同parent_id存在关系

  • 1) 内连接
    select a.*,b.* from a inner join b on a.id=b.parent_id结果是:
  1   张3                   1     23     1   
  2   李四                  2     34     2   
  • 2)左连接
    select a.*,b.* from a left join b on a.id=b.parent_id结果是:
  1   张3                   1     23     1   
  2   李四                  2     34     2   
  3   王武                  null   
  • 3) 右连接
    select a.*,b.* from a right join b on a.id=b.parent_id结果是:
 1   张3                   1     23     1   
 2   李四                  2     34     2   
 null                      3     34     4   
  • 4) 完全连接
    select a.*,b.* from a full join b on a.id=b.parent_id结果是:
 1   张3                  1     23     1   
 2   李四                 2     34     2   
 null                   3     34     4   
 3   王武                 null

更多可点击此处

  • 15
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
左连接(Left Join):左连接返回左表中所有的记录,以及表中与左表中记录匹配的记录。如果表中没有与左表匹配的记录,则表的字段值为 NULL。左连接可以用来获取左表中所有记录以及与之关联的表记录。 举例: 假设有两张表,一张是学生表(students),包学生的姓名和学号;另一张是成绩表(scores),包学号和成绩信息。通过左连接可以查询所有学生及其对应的成绩信息,即使某个学生没有成绩信息。 ```sql SELECT students.name, scores.score FROM students LEFT JOIN scores ON students.student_id = scores.student_id; ``` 连接(Right Join):连接返回表中所有的记录,以及左表中与表中记录匹配的记录。如果左表中没有与表匹配的记录,则左表的字段值为 NULL。连接可以用来获取表中所有记录以及与之关联的左表记录。 举例: 假设有两张表,一张是学生表(students),包学生的姓名和学号;另一张是成绩表(scores),包学号和成绩信息。通过连接可以查询所有成绩及其对应的学生信息,即使某个成绩没有对应的学生信息。 ```sql SELECT students.name, scores.score FROM students RIGHT JOIN scores ON students.student_id = scores.student_id; ``` 内连接(Inner Join):内连接返回两个表中符合连接条件的记录。只有在左表和表中都存在匹配的记录时,才会返回结果。 举例: 假设有两张表,一张是学生表(students),包学生的姓名和学号;另一张是课程表(courses),包课程名称和学号。通过内连接可以查询选修了课程的学生及其对应的课程信息。 ```sql SELECT students.name, courses.course_name FROM students INNER JOIN courses ON students.student_id = courses.student_id; ``` 外连接(Outer Join):外连接返回两个表中符合连接条件的记录,同时保留没有匹配的记录。外连接分为左外连接外连接左外连接(Left Outer Join):返回左表中所有的记录,以及表中与左表中记录匹配的记录。如果表中没有与左表匹配的记录,则表的字段值为 NULL。 举例: 假设有两张表,一张是学生表(students),包学生的姓名和学号;另一张是成绩表(scores),包学号和成绩信息。通过左外连接可以查询所有学生及其对应的成绩信息,即使某个学生没有成绩信息。 ```sql SELECT students.name, scores.score FROM students LEFT JOIN scores ON students.student_id = scores.student_id; ``` 外连接(Right Outer Join):返回表中所有的记录,以及左表中与表中记录匹配的记录。如果左表中没有与表匹配的记录,则左表的字段值为 NULL。 举例: 假设有两张表,一张是学生表(students),包学生的姓名和学号;另一张是成绩表(scores),包学号和成绩信息。通过外连接可以查询所有成绩及其对应的学生信息,即使某个成绩没有对应的学生信息。 ```sql SELECT students.name, scores.score FROM students RIGHT JOIN scores ON students.student_id = scores.student_id; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值