最通俗易懂的Sql语法排序

    一般的后端开发者写sql,这些基础语句就够用了(SELECT[DISTINCT],FROM,WHERE,GROUP BY,HAVING,UNION,ORDER BY),至于更复杂的基本都是更加专业的数据库开发工程师(DBD)来完成了毕竟随着语句的逻辑越复杂,已经不是简单的实现功能,更多涉及到性能,实行方式有很多,索引,分库等等,这不是本章讨论的范畴,我们这里只讲一讲基础的sql语句执行顺序问题,面试中也是会经常问到。

常用的关键字:

  1. SELECT[DISTINCT]

  2. FROM

  3. WHERE

  4. GROUP BY

  5. HAVING

  6. UNION

  7. ORDER BY

开始推导

我们把表类比为商店:

1,现在你的领导让你去买水,你的第一反应因该是什么,当然是去哪个商店买水(FROM(来自…))

2,现在你出门了,来到了商店门口 ,找到商店,跟商店老板说的要的是矿泉水(WHERE:要什么)

3,这时商店老板告诉你商店里有好几种品牌的矿泉水,你看了看货架,在心中计算了一下每个品牌有几瓶(GROUP BY:统计)

4,你想起出门的时候老板告诉你要你买五瓶同一品牌的水,你一看(COUNT(*)等函数),只有农夫山泉超过了五瓶(HAVING:哪些符合)

5,那就买五瓶农夫山泉回去(SELECT:最终结果)

6,这时,一个同事给你打电话,让你帮忙带一瓶饮料回去,你又按照刚才的流程又回去买了瓶饮料,你拎着两袋水回去了(UNION:连接一起)

7,然后回去公司,把第一袋给了老板,把第二袋给了同事(ORDER BY: 顺序)

至此,我们推导出sql的执行顺序

  1. FROM

  2. WHERE

  3. GROUP BY

  4. HAVING(以及sql中的函数如 count(*))

  5. SELECT

  6. DISTINCT

  7. UNION

  8. ORDER BY

是不是非常简单,可见代码的逻辑也是来源于生活 。

这里做一个补充,上面的关键字HAVING是一个分水岭,从这里开始这次查询的结果总量不再变化。这里做一个简单的曲线图描述查询到数据的变化趋势。union不属于这一次查询,是另一次。

最通俗易懂的Sql语法排序