当前位置:实例文章 » JAVA Web实例» [文章]MySQL学习笔记 ------ 连接查询

MySQL学习笔记 ------ 连接查询

发布人:shili8 发布时间:2025-03-01 18:10 阅读次数:0

**MySQL 学习笔记 --- 连接查询**

连接查询是 MySQL 中一种非常重要的查询类型,它可以帮助我们从多个表中获取数据。连接查询可以使用 `JOIN` 关键字来实现。

###什么是连接查询?

连接查询是一种用于从两个或更多表中获取数据的查询方式。它通过将多个表连接起来,生成一个临时结果集,使得我们能够在一个 SQL语句中处理来自多个表的数据。

### 连接查询的类型MySQL 中有两种主要的连接查询类型:

1. **内连接(INNER JOIN)**:只返回两个表中都存在的记录。
2. **外连接(LEFT/RIGHT/FULL OUTER JOIN)**:返回一个表中所有的记录,另一个表中匹配的记录则显示为 NULL。

### 内连接(INNER JOIN)

内连接是最常用的连接查询类型。它只返回两个表中都存在的记录。

sqlSELECT *
FROM 表1INNER JOIN 表2ON 表1.列名 = 表2.列名;


示例:

假设我们有两张表:`学生信息` 和 `成绩`,它们之间通过 `学号` 进行关联。我们想获取所有学生的姓名和对应的最高分数。

sqlCREATE TABLE 学生信息 (
 学号 INT PRIMARY KEY,
 姓名 VARCHAR(20)
);

INSERT INTO 学生信息 (学号, 姓名) VALUES (1, '张三'),
 (2, '李四'),
 (3, '王五');

CREATE TABLE 成绩 (
 学号 INT,
 分数 DECIMAL(5,2),
 PRIMARY KEY (学号)
);

INSERT INTO 成绩 (学号, 分数) VALUES (1,90.00),
 (2,80.00),
 (3,70.00);


sqlSELECT s.姓名, MAX(c.分数) AS 最高分数FROM 学生信息 sINNER JOIN 成绩 cON s.学号 = c.学号GROUP BY s.姓名;


结果:

| 姓名 | 最高分数 |
| --- | --- |
| 张三 |90.00 |
| 李四 |80.00 |
| 王五 |70.00 |

### 外连接(LEFT/RIGHT/FULL OUTER JOIN)

外连接用于返回一个表中所有的记录,另一个表中匹配的记录则显示为 NULL。

#### 左外连接(LEFT OUTER JOIN)

左外连接是将左边表中的所有记录与右边表进行匹配,如果没有匹配,则显示 NULL。

sqlSELECT *
FROM 表1LEFT OUTER JOIN 表2ON 表1.列名 = 表2.列名;


示例:

假设我们有两张表:`学生信息` 和 `成绩`,它们之间通过 `学号` 进行关联。我们想获取所有学生的姓名和对应的最高分数。

sqlSELECT s.姓名, MAX(c.分数) AS 最高分数FROM 学生信息 sLEFT OUTER JOIN 成绩 cON s.学号 = c.学号GROUP BY s.姓名;


结果:

| 姓名 | 最高分数 |
| --- | --- |
| 张三 |90.00 |
| 李四 |80.00 |
| 王五 |70.00 |
| null | null |

#### 右外连接(RIGHT OUTER JOIN)

右外连接是将右边表中的所有记录与左边表进行匹配,如果没有匹配,则显示 NULL。

sqlSELECT *
FROM 表1RIGHT OUTER JOIN 表2ON 表1.列名 = 表2.列名;


示例:

假设我们有两张表:`学生信息` 和 `成绩`,它们之间通过 `学号` 进行关联。我们想获取所有学生的姓名和对应的最高分数。

sqlSELECT s.姓名, MAX(c.分数) AS 最高分数FROM 学生信息 sRIGHT OUTER JOIN 成绩 cON s.学号 = c.学号GROUP BY s.姓名;


结果:

| 姓名 | 最高分数 |
| --- | --- |
| 张三 |90.00 |
| 李四 |80.00 |
| 王五 |70.00 |

#### 全外连接(FULL OUTER JOIN)

全外连接是将两个表中的所有记录进行匹配,如果没有匹配,则显示 NULL。

sqlSELECT *
FROM 表1FULL OUTER JOIN 表2ON 表1.列名 = 表2.列名;


示例:

假设我们有两张表:`学生信息` 和 `成绩`,它们之间通过 `学号` 进行关联。我们想获取所有学生的姓名和对应的最高分数。

sqlSELECT s.姓名, MAX(c.分数) AS 最高分数FROM 学生信息 sFULL OUTER JOIN 成绩 cON s.学号 = c.学号GROUP BY s.姓名;


结果:

| 姓名 | 最高分数 |
| --- | --- |
| 张三 |90.00 |
| 李四 |80.00 |
| 王五 |70.00 |

### 总结连接查询是 MySQL 中一种非常重要的查询类型,它可以帮助我们从多个表中获取数据。内连接、左外连接、右外连接和全外连接都是连接查询的常用类型。通过理解这些连接查询类型,我们可以更好地处理复杂的数据库操作。

### 参考* MySQL 官方文档:[ />* W3Schools:[

其他信息

其他资源

Top