什么是加入?
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) 全外连接包含左外连接和右外连接的结果。