SQL万能模板之七步剖析--适合小白快速入门

SQL万能模板之七步剖析–适合小白快速入门

  • SQL模板

    select 1 from 2 where 3 group by 4 having 5 order by 6 limit 7
    
    • 1-决定了结果有哪些列:对数据源中数据列的过滤
    • 2-决定了查询数据的数据源是什么
      • 表、视图、join、子查询
    • 3-决定了对数据源中数据行的过滤:分组前的行的过滤
    • 4-决定了按照哪一列的值进行分组:一般都会搭配聚合函数
      • 在group by语句中,1位置中的列要么是分组的字段,要是是聚合函数的结果
    • 5-决定了对分组后的数据进行行的过滤:分组后的行的过滤
    • 6-决定了结果按照哪一列进行排序
    • 7-决定了结果显示的位置
      • limit M,N . 可作TOP N查询
  • SQL分析

    • 需求:统计班级编号大于100的每个班级的总人数,显示总人数大于30的并且按照人数降序排序,获取前3名

    • step1:先根据需求,预测结果长什么样?

      班级		总人数
      
      • 决定了1这个位置
    • step2:判断结果需要用到哪些数据,决定了2的位置应该怎么写?

      • 班级、总人数
      • 班级名称、每个班级对应的每个人的信息【学员编号】
      • 班级、学员编号 =》 当前所有的数据表中,哪张表中有这个数据或者通过哪些表关联能得到这些数据
      • 决定了2的位置:表、join、子查询
    • step3:有没有过滤条件,决定3的位置

    • step4:有没有分组,决定了4这个位置

      • 分组聚合:有没有统计分析类的需求
      • 找关键字:每、不同、各个、每个
        • 这个关键词后面的列一般就是分组的字段
    • step5:分组后聚合函数得到的结果是否需要做行的过滤

      • 决定了5的位置
      • 能在where过滤,绝对不放在having中过滤,尽量减少用不到的数据参加分组
      • 区分:要过滤的这一列是分组前就有,还是分组后才产生的
    • step6:判断是否有排序,基于排序的列进行升序或者降序即可

    • step7:是否有分页显示

      • limit 0,3 . 也适用与于排名

猜你喜欢

转载自blog.csdn.net/mitao666/article/details/110475560