• mysql随笔 -- 基本sql语句


    常见查询语句:

    select  ....  from .... where  .. group by ... having ... order by .. limit...

      输出  获取数据     过滤    分组    过滤       排序   限定个数 

    以上为书写顺序,以下为执行顺序:

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

    例如:在select中定义的别名,在其之前是不能出现的;在之后可以再利用。

    group by分组:

    select * from 表名 group by 字段

    表示该表的字段进行分组查询时,只输出该字段分组下的第一个出现的数据。

    group by与聚合函数count()

    出现select count(1) ,classId from stu group by classId,则输出结果为

    分组后的对应的和

    对比select count(name),如果name中有null,那么count不会记录null直接跳过,判断下一个是否为Null,其他情况二者一致。

    select count(distinct name) from stu group by classId

    表示按classId分完组后,各自除去相同名字后累加的行数。

    聚集函数:

    count  --计数

    sum  -- 求和

    max  -- 最大值

    min -- 最小值

    avg -- 平均值

    group - concat 

     truncate 表名;//清空表的内容

    mysql中 group by的执行机制是先对分组的字段进行排序的,默认升序的

    select * from mysql_day1 GROUP BY clid DESC; //改成降序的

    having :有时候限定分组条件比对元组限定条件更有用

    例:select classId from mysql_day1 group by clid having count(1)>2

    实现查询班级人数大于2的班级号

    order by: 对结果集进行排序;

    例如: order by clid,id;

    先对clid排序,再对id排序(后一个在前一个相同的情况下才排序)

    case when ..then..用法:

    case when 与聚集函数:

    若想查找成

    利用分组group by后,重新写出三列,利用case when 实现

    select name,
    max(case when stage = '基础' THEN score ELSE NULL END)as '基础',
    max(case when stage = 'sql' THEN score ELSE NULL END)as 'sql',
    max(case when stage = 'web' THEN score ELSE NULL END)as 'web'
    from scores group by name

    注意: 使用聚合函数max的目的是找出分组后的各个字段对应的值

  • 相关阅读:
    ofbiz初级教程
    IBASE4J开发环境搭建
    Nginx在windows上安装 及 Nginx的配置及优化
    Windows里正确安装Zookeeper以服务运行
    分享一个完整的Mybatis分页解决方案
    jquery weui ajax滚动加载更多
    Spring+Mybatis+SpringMVC后台与前台分页展示实例
    Mysql怎么样避免全表扫描,sql查询优化
    SQL优化|Java面试题
    mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)
  • 原文地址:https://www.cnblogs.com/fjwjw/p/11507294.html
Copyright © 2020-2023  润新知