SQL Join语句用于根据两个或多个表之间的公共字段合并数据或行。不同类型的联接为:
- 内部联接
- 左联接
- 正确加入
- 完全加入
考虑下面的两个表:
学生
学生课程
最简单的联接是INNER JOIN。
- INNER JOIN:只要条件满足,INNER JOIN关键字就会从两个表中选择所有行。此关键字将通过组合两个表中满足条件的所有行来创建结果集,即,公共字段的值将相同。
语法:SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 INNER JOIN table2 ON table1.matching_column = table2.matching_column; table1: First table. table2: Second table matching_column: Column common to both the tables.
注意:我们也可以编写JOIN而不是INNER JOIN。 JOIN与INNER JOIN相同。
查询示例(INNER JOIN)
- 该查询将显示参加不同课程的学生的姓名和年龄。
SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE FROM Student INNER JOIN StudentCourse ON Student.ROLL_NO = StudentCourse.ROLL_NO;
输出:
- 该查询将显示参加不同课程的学生的姓名和年龄。
- LEFT JOIN :此联接返回联接左侧的表的所有行,以及联接右侧的表的匹配行。右侧没有匹配行的行,结果集将包含null 。 LEFT JOIN也称为LEFT OUTER JOIN。句法:
SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 LEFT JOIN table2 ON table1.matching_column = table2.matching_column; table1: First table. table2: Second table matching_column: Column common to both the tables.
注意:我们也可以使用LEFT OUTER JOIN代替LEFT JOIN,两者相同。
查询示例(LEFT JOIN) :
SELECT Student.NAME,StudentCourse.COURSE_ID FROM Student LEFT JOIN StudentCourse ON StudentCourse.ROLL_NO = Student.ROLL_NO;
输出:
- RIGHT JOIN :RIGHT JOIN与LEFT JOIN相似。此联接返回联接右侧的表的所有行,以及联接左侧的表的匹配行。左侧没有匹配行的行,结果集将包含null 。 RIGHT JOIN也称为RIGHT OUTER JOIN。句法:
SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 RIGHT JOIN table2 ON table1.matching_column = table2.matching_column; table1: First table. table2: Second table matching_column: Column common to both the tables.
注意:我们也可以使用RIGHT OUTER JOIN代替RIGHT JOIN,两者都是相同的。
查询示例(RIGHT JOIN) :
SELECT Student.NAME,StudentCourse.COURSE_ID FROM Student RIGHT JOIN StudentCourse ON StudentCourse.ROLL_NO = Student.ROLL_NO;
输出:
- FULL JOIN: FULL JOIN通过合并LEFT JOIN和RIGHT JOIN的结果来创建结果集。结果集将包含两个表中的所有行。没有匹配的行,结果集将包含NULL值。句法:
SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 FULL JOIN table2 ON table1.matching_column = table2.matching_column; table1: First table. table2: Second table matching_column: Column common to both the tables.
查询示例(FULL JOIN) :
SELECT Student.NAME,StudentCourse.COURSE_ID FROM Student FULL JOIN StudentCourse ON StudentCourse.ROLL_NO = Student.ROLL_NO;
输出:
左加入(视频)
右加入(视频)
完全加入(视频)
SQL |联接(笛卡尔联接,自联接)