SQL查询语法及子句执行顺序

15 篇文章 0 订阅

1. 查询语法

查询命令由若干子句(clause)构成,包括 SELECT 子句、INTO 子句,FROM 子句, WHERE 子句,GROUP BY 子句、HAVING 子句,ORDER BY 子句和 COMPUTE 子句等。

各子句一般按以下次序执行:

  1. 对 FROM 中的表做笛卡儿乘积;
  2. 利用 WHERE 条件过滤上一步的结果;
  3. 根据 GROUP BY 对结果分组,如果有 HAVING 子句,则用 HAVING 后的条件 对分组的数据进一步过滤;
  4. 根据 ORDER BY 对结果排序;
  5. 按 SELECT 子句显示所要求的列。

说明: 由于排序在 SELECT 子句前执行,因此,FROM 表中所有的列都可以出现在 ORDER BY 子句中,哪怕有些列没有出现在 SELECT 子句中也没有关系。

执行顺序:

  1. from
  2. join
  3. on
  4. where
  5. group by(开始使用select中的别名,后面的语句中都可以使用)
  6. avg,sum…
  7. having
  8. select
  9. distinct
  10. order by
  11. limit

2. having和where的异同:

相同:

  1. 都是对数据过滤,只保留有效的数据;
  2. where和having一样, 都不允许出现字段的别名;
  3. 只允许出现最原始的字段的名字。

不同:

  1. where是对原始的记录过滤having是对分组之后的记录过滤;
  2. where必须的写在having的前面,顺序不可颠倒否则运行出错。

参考:

关于sql和MySQL的语句执行顺序(必看!!!)

SQL Server中的having(对分组后的信息过滤)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值