📜  内连接与外连接

📅  最后修改于: 2021-09-10 02:19:03             🧑  作者: Mango

什么是加入?
SQL Join 用于根据两个或多个表之间的公共字段组合来自两个或多个表的数据。例如,请考虑以下两个表。

学生桌

EnrollNo StudentName Address
1001 geek1 geeksquiz1
1002 geek2 geeksquiz2
1003 geek3 geeksquiz3
1004 geek4 geeksquiz4

学生课程表

CourseID EnrollNo
1 1001
2 1001
3 1001
1 1002
2 1003

以下是显示在不同课程 ID 中注册的学生姓名的连接查询。

SELECT StudentCourse.CourseID,Student.StudentName
FROM Student
INNER JOIN StudentCourse 
ON StudentCourse.EnrollNo = Student.EnrollNo
ORDER BY StudentCourse.CourseID

注意:上面的 INNER 是可选的。 Simple JOIN 也被认为是 INNER JOIN

上述查询将产生以下结果。

CourseID StudentName
1 geek1
1 geek2
2 geek1
2 geek3
3 geek1

内连接和外连接有什么区别?

外连接有 3 种类型
1) 左外连接
2) 右外连接
3) 完全加入

1) 左外连接返回连接左侧表的所有行。右侧没有匹配行的行,结果右侧包含 NULL。

SELECT Student.StudentName,
       StudentCourse.CourseID
FROM Student
LEFT OUTER JOIN StudentCourse 
ON StudentCourse.EnrollNo = Student.EnrollNo
ORDER BY StudentCourse.CourseID

注意: OUTER 上面是可选的。简单的 LEFT JOIN 也被认为是 LEFT OUTER JOIN

StudentName CourseID
geek4 NULL
geek2 1
geek1 1
geek1 2
geek3 2
geek1 3

2)右外连接类似于左外连接(右替换左无处不在)

3) 全外连接包含左外连接和右外连接的结果。