📜  全外连接 (1)

📅  最后修改于: 2023-12-03 15:22:32.747000             🧑  作者: Mango

全外连接 (Full Outer Join)

全外连接是SQL语言中的一种连接类型,同时包含左外连接和右外连接的所有行,其返回结果包含两个连接表中的所有行。如果连接谓词没有匹配的行,则用NULL值填充该行。

语法
SELECT *
FROM table1
FULL OUTER JOIN table2
ON condition;
示例

假设我们有两个数据表,一个是学生表(student),另一个是学生成绩表(grade)。我们可以使用全外连接来查找两个表中的所有数据,包括没有匹配的记录。

学生表 (student):

| id | name | | ---- | ----- | | 1 | Tom | | 2 | Jane | | 3 | Mary | | 4 | John |

学生成绩表 (grade):

| id | subject | grade | | ---- | ------- | ----- | | 1 | Math | 90 | | 2 | Math | 85 | | 1 | English | 80 | | 4 | English | 75 | | 5 | Physics | 95 |

现在我们想要得到一个包含两个表中所有数据的表格,如下所示:

| student.id | student.name | grade.subject | grade.grade | | ---------- | ------------ | ------------- | ----------- | | 1 | Tom | Math | 90 | | 2 | Jane | Math | 85 | | 1 | Tom | English | 80 | | 3 | Mary | NULL | NULL | | 4 | John | English | 75 | | NULL | NULL | Physics | 95 |

使用全外连接可以轻松获得该结果,SQL查询语句如下:

SELECT *
FROM student
FULL OUTER JOIN grade
ON student.id = grade.id;
注意事项
  • 某些数据库管理系统不支持全外连接,例如MySQL。
  • 全外连接一般不常用,通常仅在需要查找两个表格之间的所有数据时使用。
  • 要确保条件中使用的列是正确的,并且在该列上有适当的索引,以获得最佳性能。