在MySQL中,连接(Join)是将两个或多个表中的数据按照指定的关联条件进行匹配,从而得到一个新的结果集。MySQL提供了多种连接方式,其中包括左连接和右连接。
1. 左连接(Left Join)
左连接是指将左边的表(左表)中的所有记录都包括在结果集中,而右边的表(右表)中的匹配记录会一起返回。如果右表中没有匹配的记录,则返回NULL。
2. 右连接(Right Join)
右连接与左连接相反,右连接将右边的表(右表)中的所有记录都包括在结果集中,而左边的表(左表)中的匹配记录会一起返回。如果左表中没有匹配的记录,则返回NULL。
为了更好地理解左连接和右连接的区别,以下是一个示例数据表的结构和数据:
student表:
student_id | name |
1 | Alice |
2 | Bob |
3 | Charlie |
teacher表:
teacher_id | student_id | course | num |
1 | 1 | A | 1 |
2 | 1 | B | 2 |
3 | 3 | C | 3 |
下面是使用左连接和右连接查询结果的示例代码:
-- 左连接
SELECT student.name, teacher.course, teacher.num
FROM student
LEFT JOIN teacher
ON student.student_id= teacher.student_id;
-- 右连接
SELECT student.name, teacher.course, teacher.num
FROM student
RIGHT JOIN teacher
ON student.student_id= teacher.student_id;
执行上述代码后,我们可以得到以下结果:
左连接结果:
name | course | num |
Alice | A | 1 |
Alice | B | 2 |
Charlie | C | 3 |
Bob | NULL | NULL |
右连接结果:
name | course | num |
Alice | A | 1 |
Alice | B | 2 |
Charlie | C | 3 |
从上述结果中可以看到,左连接将左表中的所有记录都包含在结果集中,即使右表中没有匹配的记录。而右连接将右表中的所有记录都包含在结果集中,即使左表中没有匹配