导航菜单

SQL 学习/多表查询与连接
课程进度 36% · 第4/9章4/9章 · 标签 1/4
1

SQL 连接类型

SQL支持多种表连接方式,用于从多个表中联合查询数据。不同的连接类型决定了结果集中包含哪些记录。

  1. INNER JOIN(内连接)— 只返回两表中匹配的记录
  2. LEFT JOIN(左外连接)— 返回左表所有记录及右表匹配记录
  3. RIGHT JOIN(右外连接)— 返回右表所有记录及左表匹配记录
  4. CROSS JOIN(交叉连接)— 笛卡尔积,返回所有组合
sql
1
-- INNER JOIN 语法
2
SELECT s.name, c.name AS 班级
3
FROM students s
4
INNER JOIN classes c ON s.class_id = c.id;
5
 
6
-- LEFT JOIN
7
SELECT s.name, c.name AS 班级
8
FROM students s
9
LEFT JOIN classes c ON s.class_id = c.id;
10
 
11
-- RIGHT JOIN
12
SELECT s.name, c.name AS 班级
13
FROM students s
14
RIGHT JOIN classes c ON s.class_id = c.id;
15
 
16
-- CROSS JOIN
17
SELECT s.name, c.name
18
FROM students s
19
CROSS JOIN classes c;
2

📖ON后写连接条件,避免产生笛卡尔积。可用表别名(如 s、c)简化SQL。INNER可省略,直接写JOIN默认内连接。

连接类型对比

  • INNER JOIN → 两表交集(匹配到的数据)
  • LEFT JOIN → 左表全部 + 右表匹配(无匹配则为NULL)
  • RIGHT JOIN → 右表全部 + 左表匹配(无匹配则为NULL)
  • CROSS JOIN → 所有可能组合(慎用!)

!避免无条件JOIN,否则会产生笛卡尔积导致大量无用数据。多表连接建议为连接字段加索引以提升性能。