6_MySQL_子查询和查询语句书写/执行顺序

1. 子查询

MySQL 的子查询比较多,但是一般我们很少会写很复杂的子查询,因为这样会使得 SQL 语句很复杂,因此这里只是简单举个例子:

select * from 数据表名1 where 字段1 = (select 字段2 from 数据表名2 where 字段3 = xx);

如上在 SQL 语句中嵌套 SQL 语句的情况叫子查询。

2. 查询语句的书写与执行顺序

前面我们学到查询语句可以通过不同的子句来筛选相应的数据,那么当它们出现在一个 SQL 语句中时,应该遵循什么书写顺序呢?应该遵循下面的书写顺序:

select ===> from ===> where ===> group by ===> having ===> order by ===> limit

书写顺序和执行顺序肯定不同,但执行的顺序又是怎么样的呢?假如有个查询语句包含了以下所有子句,那么我们好好来分析以下:
①首先,执行 from子句,确定目标是查询哪一张表;
②接着,执行where 子句,根据where语句排除掉部分数据(例如找出大于20的数据等等)
③接着,执行group up子句,根据分组条件,对where 语句筛选出来的数据进行分组,分成若干”小表“
④接着,执行having子句,根据筛选条件,再对每个小表中的数据分别筛选。
⑤接着,执行select子句,这个时候,已经知道了查询的结果(当然,顺序和限定数)还未知
⑥接着,执行order by子句,通过③的分组④的筛选后,再对每个小表的数据进行排序(可升序或降序)
⑦最后,执行limit子句,限制输出的记录条数,当然这个时候是以整张表为单位的,而不是针对每张小表来说的。

from ===> where ===> group by ===> having ===> select ===> order by ===> limi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执章学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值