当前位置:实例文章 » JAVA Web实例» [文章]【MySQL】内外连接

【MySQL】内外连接

发布人:shili8 发布时间:2025-02-22 22:21 阅读次数:0

**MySQL 内外连接**

在 MySQL 中,内连接(INNER JOIN)和外连接(LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)是两种常见的用于联合表数据的方法。它们允许你从多个表中提取数据,并根据需要进行过滤或排序。

**1. 内连接**

内连接(INNER JOIN)是最常用的连接类型,它只返回两个表中都存在的行。也就是说,只有当两个表中的所有列都匹配时,才会被包含在结果集中。

sqlSELECT *
FROM 表AINNER JOIN 表BON 表A.列名 = 表B.列名;


例如,我们有两张表:`员工信息`和`部门信息`。我们想从这两张表中获取所有员工的姓名、部门名称以及他们在公司工作了多久。

sqlCREATE TABLE 员工信息 (
 员工ID INT PRIMARY KEY,
 员工姓名 VARCHAR(50),
 部门ID INT);

CREATE TABLE 部门信息 (
 部门ID INT PRIMARY KEY,
 部门名称 VARCHAR(100)
);

INSERT INTO 员工信息 (员工ID, 员工姓名, 部门ID) VALUES (1, '张三',1),
 (2, '李四',2),
 (3, '王五',1);

INSERT INTO 部门信息 (部门ID, 部门名称) VALUES (1, '销售部'),
 (2, '研发部');

SELECT *
FROM 员工信息INNER JOIN 部门信息ON 员工信息.部门ID = 部门信息.部门ID;


结果如下:

| 员工ID | 员工姓名 | 部门ID | 部门名称 |
| --- | --- | --- | --- |
|1 | 张三 |1 | 销售部 |
|2 | 李四 |2 | 研发部 |
|3 | 王五 |1 | 销售部 |

**2. 外连接**

外连接(LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)用于返回一个表中所有的行,另一个表中匹配的行也会被包含在结果集中。

###2.1 左外连接左外连接(LEFT JOIN)是最常用的外连接类型,它返回左表中的所有行,并且右表中匹配的行也会被包含在结果集中。如果右表中没有匹配的行,则右表中的列将显示为 NULL。

sqlSELECT *
FROM 表ALEFT JOIN 表BON 表A.列名 = 表B.列名;


例如,我们有两张表:`员工信息`和`部门信息`。我们想从这两张表中获取所有员工的姓名、部门名称以及他们在公司工作了多久。

sqlSELECT *
FROM 员工信息LEFT JOIN 部门信息ON 员工信息.部门ID = 部门信息.部门ID;


结果如下:

| 员工ID | 员工姓名 | 部门ID | 部门名称 |
| --- | --- | --- | --- |
|1 | 张三 |1 | 销售部 |
|2 | 李四 |2 | 研发部 |
|3 | 王五 |1 | 销售部 |
|4 | 小明 | NULL | NULL |

###2.2 右外连接右外连接(RIGHT JOIN)与左外连接相反,它返回右表中的所有行,并且左表中匹配的行也会被包含在结果集中。如果左表中没有匹配的行,则左表中的列将显示为 NULL。

sqlSELECT *
FROM 表ARIGHT JOIN 表BON 表A.列名 = 表B.列名;


例如,我们有两张表:`员工信息`和`部门信息`。我们想从这两张表中获取所有员工的姓名、部门名称以及他们在公司工作了多久。

sqlSELECT *
FROM 部门信息RIGHT JOIN 员工信息ON 部门信息.部门ID = 员工信息.部门ID;


结果如下:

| 部门ID | 部门名称 | 员工ID | 员工姓名 |
| --- | --- | --- | --- |
|1 | 销售部 |1 | 张三 |
|2 | 研发部 |2 | 李四 |
|3 | 人事部 | NULL | NULL |

###2.3 全外连接全外连接(FULL OUTER JOIN)返回两个表中所有的行,匹配的行也会被包含在结果集中。如果一个表中没有匹配的行,则另一个表中的列将显示为 NULL。

sqlSELECT *
FROM 表AFULL OUTER JOIN 表BON 表A.列名 = 表B.列名;


例如,我们有两张表:`员工信息`和`部门信息`。我们想从这两张表中获取所有员工的姓名、部门名称以及他们在公司工作了多久。

sqlSELECT *
FROM 员工信息FULL OUTER JOIN 部门信息ON 员工信息.部门ID = 部门信息.部门ID;


结果如下:

| 员工ID | 员工姓名 | 部门ID | 部门名称 |
| --- | --- | --- | --- |
|1 | 张三 |1 | 销售部 |
|2 | 李四 |2 | 研发部 |
|3 | 王五 |1 | 销售部 |
|4 | 小明 | NULL | NULL |
|5 | 小红 | NULL | NULL |

**总结**

在 MySQL 中,内连接(INNER JOIN)和外连接(LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)是两种常见的用于联合表数据的方法。它们允许你从多个表中提取数据,并根据需要进行过滤或排序。

内连接只返回两个表中都存在的行,而外连接则返回一个表中所有的行,另一个表中匹配的行也会被包含在结果集中。如果一个表中没有匹配的行,则另一个表中的列将显示为 NULL。

全外连接是最常用的外连接类型,它返回两个表中所有的行,匹配的行也会被包含在结果集中。如果一个表中没有匹配的行,则另一个表中的列将显示为 NULL。

相关标签:androidmysql数据库
其他信息

其他资源

Top