左连接,右链接,内连接,外连接的区别,举例说明
时间: 2023-08-16 09:04:33 浏览: 97
内连接、外连接、左链接、右链接
左连接(Left Join):左连接返回左表中所有的记录,以及右表中与左表中记录匹配的记录。如果右表中没有与左表匹配的记录,则右表的字段值为 NULL。左连接可以用来获取左表中所有记录以及与之关联的右表记录。
举例:
假设有两张表,一张是学生表(students),包含学生的姓名和学号;另一张是成绩表(scores),包含学号和成绩信息。通过左连接可以查询所有学生及其对应的成绩信息,即使某个学生没有成绩信息。
```sql
SELECT students.name, scores.score
FROM students
LEFT JOIN scores ON students.student_id = scores.student_id;
```
右连接(Right Join):右连接返回右表中所有的记录,以及左表中与右表中记录匹配的记录。如果左表中没有与右表匹配的记录,则左表的字段值为 NULL。右连接可以用来获取右表中所有记录以及与之关联的左表记录。
举例:
假设有两张表,一张是学生表(students),包含学生的姓名和学号;另一张是成绩表(scores),包含学号和成绩信息。通过右连接可以查询所有成绩及其对应的学生信息,即使某个成绩没有对应的学生信息。
```sql
SELECT students.name, scores.score
FROM students
RIGHT JOIN scores ON students.student_id = scores.student_id;
```
内连接(Inner Join):内连接返回两个表中符合连接条件的记录。只有在左表和右表中都存在匹配的记录时,才会返回结果。
举例:
假设有两张表,一张是学生表(students),包含学生的姓名和学号;另一张是课程表(courses),包含课程名称和学号。通过内连接可以查询选修了课程的学生及其对应的课程信息。
```sql
SELECT students.name, courses.course_name
FROM students
INNER JOIN courses ON students.student_id = courses.student_id;
```
外连接(Outer Join):外连接返回两个表中符合连接条件的记录,同时保留没有匹配的记录。外连接分为左外连接和右外连接。
左外连接(Left Outer Join):返回左表中所有的记录,以及右表中与左表中记录匹配的记录。如果右表中没有与左表匹配的记录,则右表的字段值为 NULL。
举例:
假设有两张表,一张是学生表(students),包含学生的姓名和学号;另一张是成绩表(scores),包含学号和成绩信息。通过左外连接可以查询所有学生及其对应的成绩信息,即使某个学生没有成绩信息。
```sql
SELECT students.name, scores.score
FROM students
LEFT JOIN scores ON students.student_id = scores.student_id;
```
右外连接(Right Outer Join):返回右表中所有的记录,以及左表中与右表中记录匹配的记录。如果左表中没有与右表匹配的记录,则左表的字段值为 NULL。
举例:
假设有两张表,一张是学生表(students),包含学生的姓名和学号;另一张是成绩表(scores),包含学号和成绩信息。通过右外连接可以查询所有成绩及其对应的学生信息,即使某个成绩没有对应的学生信息。
```sql
SELECT students.name, scores.score
FROM students
RIGHT JOIN scores ON students.student_id = scores.student_id;
```
阅读全文