现在有两张表,计算机学院学生表和选课表,表的结构如图所示:
Student
SCourse
为了更加直观的解释,先以上述两张表为基础执行相应的SQL语句,再进行解释。
左连接(LEFT JOIN)
SQL语句
SELECT * FROM Student LEFT JOIN SCourse ON Student.SNumber = SCourse.SID
执行结果
详细解释
LEFT JOIN首先取出的是主表的所有记录,在这个例子中也就是Student表的所有记录,然后按ON后面的条件进行连接,满足条件则把附表的相应记录加到主表的相应记录中,若没有满足条件的则相应字段为Null,也就是上图的结果。
右连接(RIGHT JOIN)
SQL语句
SELECT * FROM Student RIGHT JOIN SCourse ON Student.SNumber = SCourse.SID
执行结果
详细解释
RIGHT JOIN首先取出的是也是主表的所有记录,在这个例子中是SCourse表的所有记录,然后按ON后面的条件进行连接,满足条件则把附表的相应记录加到主表的相应记录中,若没有满足条件的则相应字段为Null,也就是上图的结果。
内连接(INNER JOIN)
SQL语句
SELECT * FROM Student INNER JOIN SCourse ON Student.SNumber = SCourse.SID
执行结果
详细解释
INNER JOIN不以哪个表为主表,只连接满足条件的记录。它就等价于:
SELECT * FROM Student, SCourse WHERE Student.SNumber = SCourse.SID