【JOIN】关键字在MySql中的详细使用

目录

[INNER JOIN(内连接)](#INNER JOIN(内连接))

[LEFT JOIN(左连接)](#LEFT JOIN(左连接))

[RIGHT JOIN(右连接)](#RIGHT JOIN(右连接))

[FULL JOIN(全连接)](#FULL JOIN(全连接))

示例图形化解释JOIN的不同类型

[INNER JOIN:](#INNER JOIN:)

[LEFT JOIN:](#LEFT JOIN:)

[RIGHT JOIN:](#RIGHT JOIN:)

[FULL JOIN:](#FULL JOIN:)


INNER JOIN(内连接)

返回两个表中匹配的行。

表达方式1:

复制代码
SELECT * 
FROM table1 
INNER JOIN table2 
ON table1.column = table2.column;

表达方式2:

复制代码
SELECT * 
FROM table1, table2 
WHERE table1.column = table2.column;
LEFT JOIN(左连接)

返回左表中的所有行以及与右表匹配的行。

表达方式1:

复制代码
SELECT * 
FROM table1 
LEFT JOIN table2 
ON table1.column = table2.column;

表达方式2:

复制代码
SELECT * 
FROM table1 
LEFT OUTER JOIN table2 
ON table1.column = table2.column;
RIGHT JOIN(右连接)

返回右表中的所有行以及与左表匹配的行。

表达方式1:

复制代码
SELECT * 
FROM table1 
RIGHT JOIN table2 
ON table1.column = table2.column;

表达方式2:

复制代码
SELECT * 
FROM table1 
RIGHT OUTER JOIN table2 
ON table1.column = table2.column;
FULL JOIN(全连接)

返回左右表中的所有行。

复制代码
SELECT * 
FROM table1 
FULL JOIN table2 
ON table1.column = table2.column;
示例图形化解释JOIN的不同类型
INNER JOIN
复制代码
+----+-------+-----+-------+
| ID | Name  | Age | Grade |
+----+-------+-----+-------+
| 1  | John  | 24  | A     |
| 2  | Alice | 22  | B     |
| 3  | Bob   | 25  | A     |
+----+-------+-----+-------+

+--------+--------+
| ID     | City   |
+--------+--------+
| 1      | London |
| 2      | Paris  |
| 4      | Berlin |
+--------+--------+

After INNER JOIN:

+----+-------+-----+-------+--------+--------+
| ID | Name  | Age | Grade | ID     | City   |
+----+-------+-----+-------+--------+--------+
| 1  | John  | 24  | A     | 1      | London |
| 2  | Alice | 22  | B     | 2      | Paris  |
+----+-------+-----+-------+--------+--------+
LEFT JOIN
复制代码
+----+-------+-----+-------+
| ID | Name  | Age | Grade |
+----+-------+-----+-------+
| 1  | John  | 24  | A     |
| 2  | Alice | 22  | B     |
| 3  | Bob   | 25  | A     |
+----+-------+-----+-------+

+--------+--------+
| ID     | City   |
+--------+--------+
| 1      | London |
| 2      | Paris  |
| 4      | Berlin |
+--------+--------+

After LEFT JOIN:

+----+-------+-----+-------+--------+--------+
| ID | Name  | Age | Grade | ID     | City   |
+----+-------+-----+-------+--------+--------+
| 1  | John  | 24  | A     | 1      | London |
| 2  | Alice | 22  | B     | 2      | Paris  |
| 3  | Bob   | 25  | A     | NULL   | NULL   |
+----+-------+-----+-------+--------+--------+
RIGHT JOIN
复制代码
+----+-------+-----+-------+
| ID | Name  | Age | Grade |
+----+-------+-----+-------+
| 1  | John  | 24  | A     |
| 2  | Alice | 22  | B     |
| 3  | Bob   | 25  | A     |
+----+-------+-----+-------+

+--------+--------+
| ID     | City   |
+--------+--------+
| 1      | London |
| 2      | Paris  |
| 4      | Berlin |
+--------+--------+

After RIGHT JOIN:

+----+-------+-----+-------+--------+--------+
| ID | Name  | Age | Grade | ID     | City   |
+----+-------+-----+-------+--------+--------+
| 1  | John  | 24  | A     | 1      | London |
| 2  | Alice | 22  | B     | 2      | Paris  |
| NULL | NULL  | NULL   | NULL    | 4      | Berlin |
+----+-------+-----+-------+--------+--------+
FULL JOIN
复制代码
+----+-------+-----+-------+
| ID | Name  | Age | Grade |
+----+-------+-----+-------+
| 1  | John  | 24  | A     |
| 2  | Alice | 22  | B     |
| 3  | Bob   | 25  | A     |
+----+-------+-----+-------+

+--------+--------+
| ID     | City   |
+--------+--------+
| 1      | London |
| 2      | Paris  |
| 4      | Berlin |
+--------+--------+

After FULL JOIN:

+----+-------+-----+-------+--------+--------+
| ID | Name  | Age | Grade | ID     | City   |
+----+-------+-----+-------+--------+--------+
| 1  | John  | 24  | A     | 1      | London |
| 2  | Alice | 22  | B     | 2      | Paris  |
| 3  | Bob   | 25  | A     | NULL   | NULL   |
| NULL | NULL  | NULL   | NULL    | 4      | Berlin |
+----+-------+-----+-------+--------+--------+
相关推荐
樹JUMP14 分钟前
Python虚拟环境(venv)完全指南:隔离项目依赖
jvm·数据库·python
用什么都重名17 分钟前
Redis 入门与实践:从基础到 Stream 消息队列
数据库·redis·缓存
Mistra丶21 分钟前
记一次 JVM+Postgresql的 “死锁” 问题排查
jvm·数据库·postgresql·死锁
一然明月22 分钟前
Qt QML 锚定(Anchors)全解析
java·数据库·qt
分享牛40 分钟前
Operaton入门到精通23-Operaton 2.0 原生支持 JUnit 6 核心指南
数据库·junit
编码忘我1 小时前
mysq系列之事务
数据库
知识分享小能手1 小时前
Redis入门学习教程,从入门到精通,Redis进阶编程知识点详解(5)
数据库·redis·学习
MekoLi291 小时前
MongoDB 新手完全指南:从入门到精通的实战手册
数据库·后端
cyforkk1 小时前
Spring AOP 进阶:揭秘 @annotation 参数绑定的底层逻辑
java·数据库·spring
2401_884970611 小时前
用Pygame开发你的第一个小游戏
jvm·数据库·python