outer join是什么, 与inner join有什么区别?
在关系型数据库中,outer join(外连接)是一种连接操作,它允许在两个表格之间连接,包括未匹配的数据行。在outer join中,即使某个表中没有与另一个表匹配的行,也会返回该表中的所有行。outer join有三种类型:left outer join,right outer join和full outer join。
与outer join不同,inner join(内连接)只返回两个表中匹配的数据行。在inner join中,只有当两个表中都存在匹配行时才会返回数据。inner join是最常见的连接类型,它使用在需要匹配两个表中共同的数据时。
outer join和inner join的主要区别是:outer join可以返回未匹配的数据行,而inner join只返回两个表中匹配的数据行。
一个outer join的例子
我们以下两个表格为例:
"students"表格:
id | name |
1 | Alice |
2 | Bob |
3 | Charlie |
4 | David |
5 | Elizabeth |
"grades"表格:
student_id | grade |
1 | 95 |
2 | 87 |
4 | 92 |
现在,我们要使用left outer join找到所有学生的成绩。执行以下SQL查询语句:
SELECT students.name, grades.grade
FROM students
LEFT JOIN grades
ON students.id = grades.student_id;
返回以下结果:
name | grade |
Alice | 95 |
Bob | 87 |
Charlie | NULL |
David | 92 |
Elizabeth | NULL |
可以看到,这个查询返回了所有学生的信息,包括那些没有成绩记录的学生(Charlie和Elizabeth),并且对于没有成绩记录的学生,成绩列显示为NULL值。