📜  全连接 - SQL (1)

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

全连接 - SQL

在关系数据库中,全连接(full outer join)是连接两个表的操作,返回连接表中的所有记录,无论其在左表、右表还是两个表中都存在匹配记录。如果左表中没有匹配的行,则右表中的记录也会包括在结果集中,并且左表中的所有列都将为NULL。

SQL语法
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
示例

假设我们有两个表,一个为学生表(Students),一个为选课表(Courses)。我们想要列出所有学生和对应的课程,即使学生没有选课以及课程未被选中,可以使用全连接进行查询。

学生表(Students)

| id | name | | --- | ------ | | 1 | Alice | | 2 | Bob | | 3 | Carol |

选课表(Courses)

| id | course | | --- | ------ | | 1 | math | | 1 | music | | 2 | music | | 2 | art | | 4 | science|

使用以下SQL语句实现全连接:

SELECT Students.name, Courses.course
FROM Students
FULL OUTER JOIN Courses
ON Students.id=Courses.id;

得到以下结果:

| name | course | | ------ | ------- | | Alice | math | | Alice | music | | Bob | music | | Bob | art | | Carol | NULL | | NULL | science |

从结果可以看出,Alice和Bob选了音乐课,Alice还选了数学课,Bob还选了艺术课,Carol没有选课,而科学课没有学生选。需要注意的是,在结果中有3行没有匹配到学生或课程,因此它们的姓名或课程列值为NULL。

总结

全连接提供了一种灵活的方法,可以连接两个表中的所有数据行,无论它们是否匹配。在处理复杂的数据库查询时,应该熟悉并理解全连接的用法。