图解MySQL 内连接、外连接、左连接、右连接、全连接
转载自:https://blog.csdn.net/plg17/article/details/78758593
用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。
MySQL版本:Server version: 5.6.31 MySQL Community Server (GPL)
数据库表:a_table、b_table
主题:内连接、左连接(左外连接)、右连接(右外连接)、全连接(全外连接)
前提
建表语句:
- CREATE TABLE `a_table` (
- `a_id` int(11) DEFAULT NULL,
- `a_name` varchar(10) DEFAULT NULL,
- `a_part` varchar(10) DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
- CREATE TABLE `b_table` (
- `b_id` int(11) DEFAULT NULL,
- `b_name` varchar(10) DEFAULT NULL,
- `b_part` varchar(10) DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
表测试数据:
一、内连接
关键字:inner join on
![](/assets/blank.gif)
说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
![](/assets/blank.gif)
二、左连接(左外连接)
![](/assets/blank.gif)
三、右连接(右外连接)
四、全连接(全外连接)
五、补充,MySQL如何执行关联查询
- outer_iter = iterator over tbl1 where col1 in (5, 6)
- outer_row = outer_iter.next
- while outer_row
- inner_iter = iterator over tbl2 where col3 = outer_row.col3
- inner_row = inner_iter.next
- while inner_row
- output [ outer_row.col1, inner_row.col2]
- inner_row = inner_iter.next
- end
- outer_row = outer_iter.next
- end
上面的执行计划对于单表查询和多表关联查询都适用,如果是一个单表查询,那么只需要上面外层的基本操作。对于外连接,上面的执行过程仍然适用。例如,我们将上面的查询语句修改如下:
select tbl1.col1, tbl2.col2 from tbl1 left outer join tbl2 using(col3) where tbl1.col1 in (5, 6);
- outer_iter = iterator over tbl1 where col1 in (5, 6)
- outer_row = outer_iter.next
- while outer_row
- inner_iter = iterator over tbl2 where col3 = outer_row.col3
- inner_row = inner_iter.next
- if inner_row
- while inner_row
- output [ outer_row.col1, inner_row.col2]
- inner_row = inner_iter.next
- end
- else
- output [ outer_row.col1, null]
- end
- outer_row = outer_iter.next
- end
说明:第五部分摘自《高性能MySQL 第三版》
图解MySQL 内连接、外连接、左连接、右连接、全连接相关推荐
- mysql内外链接图_图解MySQL 内连接、外连接、左连接、右连接、全连接
用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下mysql的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). mysql版 ...
- 图解MySQL 内连接、外连接、左连接、右连接、全连接……太多了
用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...
- 图解MySQL 内连接、左连接、右连接
一.准备工作 用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). ...
- 【MySQL】MySQL 的连接(内、左、右、全)
一.表 的连 结 1.目的:减少数据的冗余 2.核心:分类 ***连接时至少要两张表,连接主要有内连接(inner join).左外连接(left outer join).右外连接(right out ...
- 数据库内、外、左、右连接详解
写在前面: 数据库连接操作非常重要,明确连接操作有助于更好地掌握SQL语句查询操作. 数据库连表方式: 内连接 :inner join 外连接 :outer join 左外连接 :left outer ...
- tplink连接服务器失败_管家婆财贸双全连接失败,服务器端没有找到加密狗
管家婆财贸双全连接失败,服务器端没有找到加密狗 管家婆财贸双全找不到狗判断步骤 1.先判断电脑能否识别管家婆财贸双全加密狗我的电脑--右键--属性--硬件--设备管理器--通用串行总线控制器(或人体学 ...
- 实例讲解内连接、左连接、右连接、交叉连接、外连接以及全连接
目录 示例表: 1.内连接-inner: 实例1:内连接表a和表b 实例2:内连接表a和表c 实例3:内连接表a和表b,使用">"号 实例4:内连接表a和表b,使用" ...
- 图解SQL的连接:左连接、右连接、全连接、内连接、自然连接
SQL的连接分为三类: 外连接(包括左连接left join.右连接right join.全连接full join) 内连接 inner join 自然连接 natural join 我们来看一个超级 ...
- MySQL数据库基础(多表关联查询、内外全连接、复合条件查询、子查询)
文章目录 一.笛卡尔积查询 二.内.外.全连接查询 三.复合条件查询 四.子查询 五.EXIST判断 本篇文章主要介绍MySQL里的多表关联查询,其中包括了笛卡尔积查询.内连接查询.外连接查询.全连接 ...
- (六)MySQL数据库高阶语句之正则表达式、运算符、连接表达式JOIN
文章目录 一.正则表达式 二.运算符 1.算术运算符 2.比较运算符 3.逻辑运算符(布尔值) 4.位运算符 5.优先级 三.连接查询 1.内连接 2.左连接 3.右连接 一.正则表达式 MySQL ...
最新文章
- 简述ssl协议及利用openssl创建私有CA
- 零基础Java学习之初始化块
- python解释器是什么-python解释器都有什么
- mysql数据备份mysqldump
- lede 命令 启用 ssh_PHP imap_open函数任意命令执行漏洞
- frontend badi
- Synchronized总结
- 【Java】Socket网络编程解读与实战
- 就谈个py 的装饰器 decorator
- 使用Spark Streaming进行情感分析
- 基础知识复习(一)——C语言位运算符详解
- 国内十大主流安卓和iOSApp应用商店推广渠道列表
- 央视频卫视app直播收看教程(2021)
- 易语言 安装目录没有VC98linker 编译不成功 VC98linker静态连接器(迷你版),易语言VC98linker破解工具,修复静态编译。
- 2021-08-29 网安实验-网络协议栈渗透测试之DDOS攻击之CC攻击
- android studio项目中将普通文件夹变成moudle
- Tracup已证明,高效敏捷的沟通与协作可提升IT生产力
- 纽约峭石之巅观景台:从直入云天的城市之巅眺望纽约全景
- Gradle基础:4:Task的使用方式
- 力扣(98.107)补9.10