📜  SQL 外连接(1)

📅  最后修改于: 2023-12-03 15:05:18.685000             🧑  作者: Mango

SQL 外连接

SQL 外连接是一种在两个或多个表之间建立连接的方式,它允许查询返回左表中符合查询条件的所有行,以及右表中与左表中的行相匹配的行。当左表中没有匹配的行时,右表会返回 NULL 值。

内连接和外连接的区别

如果需要在两个或多个表之间建立连接,可以使用内连接或外连接。内连接只返回两个表中都符合查询条件的行,而外连接返回符合条件的所有行,包括在一个表中没有匹配的行。

外连接的类型

外连接分为左外连接、右外连接和完全外连接。

  • 左外连接(LEFT OUTER JOIN):返回左表中符合查询条件的所有行,以及右表中与左表中的行相匹配的行。当左表中没有匹配的行时,右表会返回 NULL 值。
SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table1.col1 = table2.col1;
  • 右外连接(RIGHT OUTER JOIN):返回右表中符合查询条件的所有行,以及左表中与右表中的行相匹配的行。当右表中没有匹配的行时,左表会返回 NULL 值。
SELECT *
FROM table1
RIGHT OUTER JOIN table2
ON table1.col1 = table2.col1;
  • 完全外连接(FULL OUTER JOIN):返回两个表中所有符合查询条件的行,如果一个表中没有匹配的行,则返回 NULL 值。
SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.col1 = table2.col1;
使用外连接的示例

假设有两个表:students 和 scores,其中 students 表保存了学生的姓名和学号信息,scores 表保存了学生的成绩信息。我们需要查询所有学生的姓名和成绩,如果一个学生没有成绩,则显示 NULL 值。

SELECT students.name, scores.score
FROM students
LEFT OUTER JOIN scores
ON students.id = scores.student_id;

此查询将返回所有学生的姓名和成绩,如果一个学生没有成绩,则成绩列将显示 NULL 值。

# 结果

| name    | score |
|---------|-------|
| Alice   | 90    |
| Bob     | NULL  |
| Charlie | 85    |
| David   | 92    |