MySQL排序查询,分组查询,分页查询,聚合函数

DQL:查询语句

  1. 排序查询
    • 语法:order by 字句

      • order by 排序字段1 排序方式1, 排序字段2 排序方式2
    • 排序方式

      • ASC:升序,默认得
      • DESC:降序
    • 例子

      SELECT * FROM student ORDER BY math ASC,english ASC;
      //查询学生表的所有数据,按照数学成绩升序排序,如果数学成绩一样,按照英语成绩升序排列
      
  • 注意

    • 如果有多个排序条件,则当第一个条件一样时,才会判断第二条件
  1. 聚合函数

    1. count():计算个数,一般选择非空列,主键
    2. max():计算最大值
    3. min():计算最小值
    4. sum():计算和
    5. avg():计算平均值
      • 注意:聚合函数得计算,排除null值。
      • 解决方法:
        1. 选择不包含非空列进行计算
        2. IFNULL()函数
  2. 分组查询

    1. 语法:group by 分组字段;

    2. 注意:

      1. 分组之后查询得字段:分组字段、聚合函数
      2. where和having的区别?
        1. where在分组之前限定,having在分组之后限定
        2. where后不可以跟聚合函数,having后可以使用聚合函数
    3. 例子:

      1. 按照性别分组,分别查询男、女同学的平均分和人数

        SELECT sex,AVG(math) ,COUNT(id) FROM student GROUP BY SEX;
        
      2. 按照性别分组。分别查询男女生的平均分、人数,低于70分的不参加统计

      SELECT sex,ACG(math),COUNT(id) FROM student where math > 70 GROUP BY sex;
      
      1. 按照性别分组。分别查询男女生的平均分、人数,低于70分的不参加统计 ,分组之后,人数要大于2个人

        SELECT sex,AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2; 
        
  3. 分页查询

    1. 语法:limit 开始的的索引,每页查询的条数

    2. 公式:开始的索引 = (当前的页码-1)* 每页的条数

      SELECT * FROM student LINIT 0,3  //第一页
      
      SELECT * FROM student LINIT 3,3  //第二页
      
      SELECT * FROM student LINIT 6,3  //第三页
      
    3. limit是MySQL特有的语法

你可能感兴趣的:(MySQL排序查询,分组查询,分页查询,聚合函数)