SQL入门之第十六讲——总结下之前的SQL语句书写顺序

本文揭示了SQL语句书写顺序与实际执行顺序的区别,详细解释了FROM、JOIN等操作在执行过程中的转换,并强调UNION在排序前的操作。通过实例讲解,帮助读者掌握SQL语句的实际运行逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL语句的书写顺序与执行顺序不是一致的

1、SQL语句的书写顺序

  • 语句的书写顺序是比较重要的,如果顺序不对去执行也是会报错的。
  • 之前的SELECT、WHERE、ORDER BY、LIMIT、JOIN、UNION、GROUP BY、HAVING等语法,如果这些语句在SQL中同时存在,那书写顺序就非常重要了。

基本语法:

SELECT <字段名> 
FROM <表名a> 
JOIN <表名b> 
ON <a.字段名 = b.字段名> 
WHERE <筛选条件> 
GROUP BY <字段名> 
HAVING <筛选条件> 
UNION
ORDER BY <字段名> 
LIMIT <限制行数>;

看着会比较复杂,不需要特意去背,多做题自然而然就熟悉了。

2、SQL语句的执行顺序

SQL语句的书写顺序实际上与执行的顺序是不一样的,具体来看:

  1. FROM :选择from后面跟着的表,产生虚拟表1
  2. ON:on是join的连接条件,符合连接条件的会被记录在虚拟表2
  3. JOIN:如果指定了left join的话,会保留表中未匹配的行会作为外部行添加带虚拟表2,产生虚拟表3, 如果有多个join,会重复执行1~3步骤,直到处理完所有
  4. WHERE:对虚拟表3进行条件筛选过滤,符合条件的记录会被记录到虚拟表4
  5. GROUP BY:根据grouo by 子句中的列,对虚拟表4中的记录进行分组,产生虚拟表5
  6. HAVING :对虚拟表5进行条件过滤,符合条件的记录会被插入到虚拟表6中
  7. SELECT :select 到这一步才执行,选择指定的列,插入到虚拟表7中
  8. UNION:union连接两个select查询语句,会重复执行1-7步骤,产生两个虚拟表7,union会将这些记录合并到虚拟表8
  9. ORDER BY:将虚拟表8中的数据,进行排序,产生虚拟表9
  10. LIMIT :从虚拟表9中 取出指定行的记录,返回到结果集

3、总结的顺序

  • 书写顺序:SELECT > FROM > JOIN > ON > WHERE > GROUP BY > HAVING > UNION > ORDER BY > LIMIT >;

  • 执行顺序:FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > UNION > ORDER BY > LIMIT >;

需要注意的地方:
无论是执行顺序还是书写顺序,UNION都是在 ORDER BY 前面,SQL语句会把所有UNION合并后,在进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值