图说MySQL的几种join连接

数据库 MySQL
MySQL联表查询可以说是使用MySQL必须面对的问题,而且在实际的工作中,使用比较多的查询大概也是联表查询。虽然,经常使用联表查询,但是你真的清楚其中的机制吗?带着这个问题,下面让我们进入本文的主题——图说MySQL的几种join连接。
 

【MySQL数据库】图说MySQL的几种join连接

MySQL联表查询可以说是使用MySQL必须面对的问题,而且在实际的工作中,使用比较多的查询大概也是联表查询。虽然,经常使用联表查询,但是你真的清楚其中的机制吗?

带着这个问题,下面让我们进入本文的主题——图说MySQL的几种join连接。

基本概念

连接(join)就是将多个表中的字段根据匹配条件进行横向的拼接。

  • 左表:在语法上位于join左边的表,叫左表。

  • 右表:在语法上位于join右边的表,叫右表。

图说join连接

1、交差连接(cross join)

用左表中的每一行数据去匹配右表中的每一行数据,且认为全部匹配成功。最终的结果集是迪卡尔积。

语法:

select * from 左表 cross join 右表;

示例:

【MySQL数据库】图说MySQL的几种join连接

2、内连接(inner join)

使用左表中的每一条记录去匹配右表的所有的记录,根据匹配的条件,如果成立,保留整条记录,如果不成立则丢弃。

用文氏图表示,则如下:

【MySQL数据库】图说MySQL的几种join连接

语法:

select * from 左表 【inner】 join 右表 【on 条件】

示例:

【MySQL数据库】图说MySQL的几种join连接

3、左连接(left join)

将左表作为主表,用主表中的每一条记录,去匹配从表(右表)中的所有记录,根据匹配的条件,如果成功则将主表的记录中的字段与从表的记录中的记录,拼接成一条完整的记录,放到结果集;如果不成功则将从表中的记录中的字段全部置为null,保留主表中的字段。

用文氏图表示,如下:

【MySQL数据库】图说MySQL的几种join连接

语法:

select * from 左表 left join 右表【on条件】

示例:

【MySQL数据库】图说MySQL的几种join连接


4、右连接(right join)

将右表作为主表,用主表中的每一条记录,匹配从表中的所有记录,根据匹配的条件,如果成功则将主表的记录中的字段与从表的记录中的记录,拼接成一条完整的记录,放到结果集。如果不成功则将从表中的记录中的字段全部置为null,保留主表中的字段。

用文氏图表示,如下:

【MySQL数据库】图说MySQL的几种join连接

语法:

select * from 左表 right join 右表【on条件】

示例:

【MySQL数据库】图说MySQL的几种join连接

5、自然连接(natural join)

对两表进行连接查询时,系统会盲目的用同名字段为匹配条件。会合并同名字段,并且将匹配字段放到结果集的前面。

然自然连接分为左自连接和右自然连接。

  • 直接使用natural join连接主表和从表,相当于内连接

  • 当使用natural left join时,相当于左连接

  • 当使用natural right join时,相当于右连接

自然链接(natural join)

语法:

select * from 左表 natural join 右表

示例:

【MySQL数据库】图说MySQL的几种join连接

左自然连接(natural left join)

语法:

select * from 左表 natural left join 右表

示例:

【MySQL数据库】图说MySQL的几种join连接

右自然连接(natural right join)

语法:

select * from 左表 natural right join 右表

示例:

【MySQL数据库】图说MySQL的几种join连接 

责任编辑:庞桂玉 来源: 今日头条
相关推荐

2017-12-11 14:12:40

PythonMySQL连接

2010-05-21 17:30:28

2010-09-25 14:48:55

SQL连接

2020-09-18 12:00:24

Spark SQLJoin数据库

2010-09-09 15:51:22

sqlinner join语法

2021-08-11 21:46:47

MySQL索引join

2017-06-13 10:30:20

oracle连接命名

2024-01-09 09:46:13

数据库MySQL

2020-11-12 07:49:18

MySQL

2010-04-21 17:51:36

Oracle左连接

2010-07-05 10:00:20

黑客历史

2022-09-14 08:01:36

JoinMySQL迭代器

2010-11-24 09:56:20

mysql拷贝表

2020-04-13 15:25:01

MySQL数据库模糊搜索

2017-08-31 14:57:53

数据库MySQLJOIN

2010-05-21 14:36:00

MySQL left

2023-10-08 08:53:36

数据库MySQL算法

2024-03-15 08:06:58

MySQLJOIN命令

2010-05-05 10:32:06

Oracle左连接le

2023-06-07 07:43:57

数据库JOIN类型
点赞
收藏

51CTO技术栈公众号