mysql多个join在一句先后执行顺序,MySQL 高级(二)一条SQL语句的执行顺序 SQL中的七种JOIN图解...

MySQL 高级(二)一条SQL语句的执行顺序 SQL中的七种JOIN图解

MySQL 高级(二)一条SQL语句的执行顺序 SQL中的七种JOIN图解

MySQL 高级(二)一条SQL语句的执行顺序 SQL中的七种JOIN图解

人的书写思路:

1 SELECT DISTINCT

2 FROM

3 JOIN ON

4 WHERE

5 GROUP BY

6 HAVING

7 ORDER BY

8 LIMIT

MySQL的解析思路:

1 FROM

2 ON

3 JOIN

4 WHERE

5 GROUP BY

6 HAVING

7 SELECT

8 DISTINCT

9 ORDER BY

10 LIMIT

总结:SQL的执行顺序

4853f30537c1728380d7dec52477b1fc.png

七种Join的维恩图帮助理解:

f673d40643fb9a56f376c78ff630fc78.png

测试用例:

部门表tbl_dept

CREATE TABLE tbl_dept (

id INT4 NOT NULL auto_increment,

dept_name VARCHAR ( 255 ) DEFAULT NULL,

ioc_add VARCHAR ( 255 ) DEFAULT NULL,

PRIMARY KEY ( id )

) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

员工表tbl_emp

CREATE TABLE tbl_emp (

id INT4 NOT NULL auto_increment,

`name` VARCHAR ( 255 ) DEFAULT NULL,

dept_id INT4 DEFAULT NULL,

PRIMARY KEY ( id ),

KEY fk_dept_id ( dept_id )

#CONSTRAINT fk_dept_id FOREIGN KEY(dept_id) REFERENCES tbl_dept(id)

) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

测试数据

INSERT INTO tbl_dept ( dept_name, ioc_add ) VALUES ( 'RD', 11 );

INSERT INTO tbl_dept ( dept_name, ioc_add ) VALUES ( 'HR', 12 );

INSERT INTO tbl_dept ( dept_name, ioc_add ) VALUES ( 'MK', 13 );

INSERT INTO tbl_dept ( dept_name, ioc_add ) VALUES ( 'MIS', 14 );

INSERT INTO tbl_dept ( dept_name, ioc_add ) VALUES ( 'FD', 15 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e1', 1 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e2', 1 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e3', 1 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e4', 2 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e5', 2 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e6', 3 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e7', 4 );

INSERT INTO tbl_emp ( name, dept_id ) VALUES ( 'e8', 51 );

3.1 内连接 inner join

内连接 inner join 查询获取a和b表中满足on条件的记录

SELECT

*

FROM

tbl_emp a

INNER JOIN tbl_dept b ON a.dept_id = b.id

021260dacb39f91b2aca2738383a6302.png

3.2 全连接 full jion

mysql 不支持全连接full jion 写法,会报sql语句错误

解决方法:可以通过unoin关键字,将左连接和右连接合并并去重实现

SELECT

*

FROM

tbl_emp a

LEFT JOIN tbl_dept b ON a.dept_id = b.id

UNION

SELECT

*

FROM

tbl_emp a

RIGHT JOIN tbl_dept b ON a.dept_id = b.id

014ba2a73427c369f5e51e6abf0d5e7b.png

3.3 全外连接

SELECT

*

FROM

tbl_emp a

LEFT JOIN tbl_dept b ON a.dept_id = b.id

WHERE

b.id IS NULL

UNION

SELECT

*

FROM

tbl_emp a

RIGHT JOIN tbl_dept b ON a.dept_id = b.id

WHERE

a.dept_id IS NULL

80493d3fc439c13510ba83648707c320.png

MySQL 高级(二)一条SQL语句的执行顺序 SQL中的七种JOIN图解相关教程

虚拟机安装tomcat、mysql、定时任务、时钟同步

虚拟机安装tomcat、mysql、定时任务、时钟同步 ** ** 1、软件包的上传与解压 tar zxvf apache-tomcat-6.0.53.tar.gz -C …/servers/ 2、直接启动,并查看启动日志 ./startup.sh tail -100f …/logs/catalina.out 3、验证,在浏览器访问http://192.168.10.132:

Python-高级:元类

Python-高级:元类 1.类也是对象,globals查看所有的全局对象引用 globals() Python运行流程,现在globals里面找,找不到的话就在globals里的__builtins__里找: 例子:使用print 解释:globals()返回一个全局变量与其对应指向的dict,其中print在__builtins_

MySQL 高级(四)索引性能分析 索引单表优化 索引两表优化 索引

MySQL 高级(四)索引性能分析 索引单表优化 索引两表优化 索引三表优化 索引优化案例 规律 索引面试题分析 优化总结口诀 MySQL 高级(四)索引优化分析 4.7 索引性能分析 前景知识 :MySQL中有专门负责优化SELECT语句的优化器模块,可以通过计算分析系统中收

【Jenkins】一条简单的“java -jar jenkins.war“,轻松实现Jenk

【Jenkins】一条简单的“java -jar jenkins.war“,轻松实现Jenkins部署 文章目录 准备工作 部署 上传文件 启动脚本 启动 修改文件 文件路径 修改内容 重启 准备工作 下载war包: 下载地址 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上

解决mysql建立的数据库名字不能带大写字母

解决mysql建立的数据库名字不能带大写字母 1、在安装目录下,找到 my.ini文件 2、找到 [mysqId]节点 3、在它下面添加 lower_case_table_names=2 如果设置为0的话,我的Mysql服务不能重启 4、重启Mysql 直接手动重启即可,在服务中,找到Mysql服务,先停止,然

MySQL 高级(六)查询截取分析 慢查询日志 MySQL dump slow 慢查

MySQL 高级(六)查询截取分析 慢查询日志 MySQL dump slow 慢查询日志分析工具 show profile 全局查询日志 MySQL 高级(六)查询截取分析 问题 :在开发环境中,分析出SQL并优化的步骤是什么? 流程 : 观察,至少跑1天,看看生产的慢SQL情况 开启慢查询日志

MySQL 高级(五)排序索引优化 永远小表驱动大表 Order by 关键

MySQL 高级(五)排序索引优化 永远小表驱动大表 Order by 关键字的排序优化 Group by 关键字的优化 MySQL 高级(五)排序索引优化 5.1 永远小表驱动大表 优化原则 :小表驱动大表,即小的数据集驱动大的数据集 案例 : SELECT * FROM A WHERE id in (select

Springboot+Mybatis +Mysql 实现登录功能以及遇到的一些问题

Springboot+Mybatis +Mysql 实现登录功能以及遇到的一些问题 本文参考自博客https://blog.csdn.net/baidu_39298625/article/details/98102453 在根据上面博客写功能实现的时候遇到了不少问题,现将遇到的问题描述出来,避免以后再遇到。 1,在没有配置yml文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值