SQL:MySQL7种JOIN用法总结

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
RDS MySQL DuckDB 分析主实例,集群系列 8核16GB
简介: SQL:MySQL7种JOIN用法总结

d6.1.jpeg

数据准备

1、建2张表

# 姓名表
create table table_name(
  id int(11) primary key auto_increment,
  user_id int(11) default 0,
  name varchar(5) default ''
);
# 年龄表
create table table_age(
  id int(11) primary key auto_increment,
  user_id int(11) default 0,
  age int(11) default 0
);

2、原始数据

# user_id, name, age
(1, "小赵", 21), 
(2, "小钱", 22), 
(3, "小孙", 23), 

将6条数据分为两部分插入到数据库中

# 名字表少一条 user_id = 3
insert into table_name(user_id, name)
values(1, "小赵"), (2, "小钱");
# 年龄表少一条 user_id = 2
insert into table_age(user_id, age)
values(1, 21), (3, 23);

3、查看数据

mysql> select * from table_name;
+----+---------+--------+
| id | user_id | name   |
+----+---------+--------+
|  1 |       1 | 小赵   |
|  2 |       2 | 小钱   |
+----+---------+--------+
mysql> select * from table_age;
+----+---------+------+
| id | user_id | age  |
+----+---------+------+
|  1 |       1 | 21   |
|  3 |       3 | 23   |
+----+---------+------+

d6.2.png


mysql> select a.user_id, name, age  
    -> from table_name as a inner join table_age as b  
    -> on a.user_id=b.user_id;
+---------+--------+------+
| user_id | name   | age  |
+---------+--------+------+
|       1 | 小赵   |   21 |
+---------+--------+------+

2、LEFT JOIN (左连接)

d6.3.png


mysql> select a.user_id, name, age
from table_name as a left join table_age as b
on a.user_id=b.user_id;
+---------+--------+------+
| user_id | name   | age  |
+---------+--------+------+
|       1 | 小赵   |   21 |
|       2 | 小钱   | NULL |
+---------+--------+------+

3、RIGHT JOIN(右连接)

d6.4.png

mysql> select b.user_id, name, age
from table_name as a right join table_age as b
on a.user_id=b.user_id;
+---------+--------+------+
| user_id | name   | age  |
+---------+--------+------+
|       1 | 小赵   |   21 |
|       3 | NULL   |   23 |
+---------+--------+------+

4、UNION(全连接)

d6.5.png


mysql> select a.user_id, name, age 
from table_name as a left join table_age as b
on a.user_id =b.user_id
union
select b.user_id, name, age 
from table_name as a right join table_age as b
on a.user_id =b.user_id;
+---------+--------+------+
| user_id | name   | age  |
+---------+--------+------+
|       1 | 小赵   |   21 |
|       2 | 小钱   | NULL |
|       3 | NULL   |   23 |
+---------+--------+------+

5、LEFT JOIN EXCLUDING INNER JOIN(左连接-内连接)

d6.6.png


mysql> select a.user_id, name, age
    -> from table_name as a left join table_age as b
    -> on a.user_id=b.user_id
    -> where b.user_id is null;
+---------+--------+------+
| user_id | name   | age  |
+---------+--------+------+
|       2 | 小钱   | NULL |
+---------+--------+------+

6.RIGHT JOIN EXCLUDING INNER JOIN(右连接-内连接)

d6.7.png


mysql> select b.user_id, name, age
    -> from table_name as a right join table_age as b
    -> on a.user_id=b.user_id
    -> where a.user_id is null;
+---------+------+------+
| user_id | name | age  |
+---------+------+------+
|       3 | NULL |   23 |
+---------+------+------+

7、OUTER JOIN EXCLUDING INNER JOIN(外连接-内连接)

d6.8.png


mysql> select a.user_id, name, age
    -> from table_name as a left join table_age as b
    -> on a.user_id =b.user_id
    -> where b.user_id is null
    -> union
    -> select b.user_id, name, age
    -> from table_name as a right join table_age as b
    -> on a.user_id =b.user_id
    -> where a.user_id is null;
+---------+--------+------+
| user_id | name   | age  |
+---------+--------+------+
|       2 | 小钱   | NULL |
|       3 | NULL   |   23 |
+---------+--------+------+

8、笛卡尔积

mysql> select * from table_name join table_age;
+----+---------+--------+----+---------+------+
| id | user_id | name   | id | user_id | age  |
+----+---------+--------+----+---------+------+
|  1 |       1 | 小赵   |  1 |       1 |   21 |
|  2 |       2 | 小钱   |  1 |       1 |   21 |
|  1 |       1 | 小赵   |  2 |       3 |   23 |
|  2 |       2 | 小钱   |  2 |       3 |   23 |
+----+---------+--------+----+---------+------+

总结

操作

关键字

解释

图示

内连接

INNER JOIN

A ∩ B A \cap BA∩B

 

左连接

LEFT JOIN

a ∈ A a \in Aa∈A

 

右连接

RIGHT JOIN

a ∈ B a \in Ba∈B

 

全连接

UNION

A ∪ B A \cup BA∪B

 

左表独有

LEFT JOIN WHERE

A − A ∩ B A - A \cap BA−A∩B

 

右表独有

RIGHT JOIN WHERE

B − A ∩ B B - A \cap BB−A∩B

 

并集去交集

UNION WHERE

A ∪ B − A ∩ B A \cup B - A \cap BA∪B−A∩B


参考

1、一张图看懂 SQL 的各种 join 用法

2、mysql中的几种join 及 full join问题

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
数据可视化 Python
神操作!用 Python 操作 xmind 绘制思维导图!
在平时的工作中当我们要总结一些知识的时候就需要一款工具来画画流程图,这里推荐 XMind 软件,用 Xmind 绘制的思维导图看起来思路清晰,那么今天的文章介绍关于思维导图的相关知识以及用 Python 如何操作 Xmind 绘制思维导图。
2453 0
神操作!用 Python 操作 xmind 绘制思维导图!
|
Java BI Scala
6款实用开源报表工具
大数据时代,从海量数据中挖掘出有用的数据,并以较人性化、直观的方式展示这些数据,变得尤为重要。今天小编为大家介绍6款实用的开源报表工具,你可以使用这些工具做出高效,且符合企业需求的报表。
33059 0
W9
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
958 2
|
监控 安全 测试技术
如何确保API对接过程中的数据安全?
确保API对接过程中的数据安全至关重要。最佳实践包括:使用HTTPS协议、强化身份验证和授权、数据加密、输入验证、访问控制、限流限速、日志记录和监控、安全测试、数据脱敏、错误处理、API网关、Web应用程序防火墙(WAF)、审计和合规性。这些措施能有效提升API的安全性,保护数据免受恶意攻击和泄露风险。
|
NoSQL 关系型数据库 分布式数据库
【赵渝强老师】HBase的表结构
本文介绍了Google的BigTable思想及其对HBase的影响。BigTable将所有数据存入一张表中以提高查询性能,而HBase作为其具体实现,采用列式存储,适合数据分析和处理。文章通过示例说明了HBase的表结构和数据插入方法,并提供了相关代码和图示。
480 0
|
数据采集 中间件 数据处理
scrapy的入门和使用
scrapy的入门和使用
|
Go
Golang语言高级数据类型之指针篇
这篇文章详细讲解了Golang语言中的指针概念、指针地址和类型、定义指针变量、指针的细节操作、指针传值,以及内置函数new和make的用法和它们之间的区别。
241 0
|
存储 SQL cobar
大厂原来都这么对MySQL分库分表!(上)
大厂原来都这么对MySQL分库分表!(上)
2245 0
大厂原来都这么对MySQL分库分表!(上)
|
关系型数据库 MySQL 数据库
精通MySQL:数据库管理、性能优化与最佳实践
h3> 一、引言 MySQL是一个功能强大的开源关系型数据库管理系统,广泛应用于各种Web应用、企业级应用和数据分析等领域
1502 0
|
API Go 网络架构
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
839 4

热门文章

最新文章