MySQL-DQL查询语句的其他方法查询

1.查询语句

  order by 子句:

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

  排序方式:

      asc:升序(默认)

       desc:降序

  注意:

    如果有多个排序条件时,则当前边的条件值一样时,才会判断第二个条件 如:select * from student order by math desc, english asc(按照数学成绩降序排列,如果数学成绩一样,则按照英语成绩升序排列)

2.聚合函数:将一列数据作为一个整体,进行纵向计算(比如计算数学吃绩这一列的平均分)

  Ⅰ.count:计算个数  

    count 排序的列

    根据某个列的属性来查询个数:

    select count(math) from student; 

       ②如果想要查询只要有一个数据不为空的就包含查询的个数,则:

       select count(*) from student; 

  Ⅱ.max:计算最大值

    select count(max) from student; 

  Ⅲ.min:计算最小值

    select count(min) from student;   

  Ⅳ.sum:求和

    select count(sum) from student; 

  Ⅴ.avg:计算平均值

    select count(avg) from student; 

  注意:所有的聚合函数都会排除空的数据,比如,根据英语成绩计算数量,如果有8个数据,其中一个的英语数据为null,则查询到的count为7 如:select count(english) from student;

      如果说非要根据英语成绩查询所有的数量且为8个,则使用ifnull 如:select count(ifnull(english,0)) from student;

3.分组查询

  group by子句:

    group by 分组的字段

      根据性别分组查询性别的数学成绩平均分,人数   如:select sex, avg(math), count(id) from student group by sex;

      根据性别分组查询性别的数学成绩平均分,如果分数小于七十则不参与分组,分组之后,人数要大于2个人  如:select sex, avg(math), count(id) from student where math>70 group by sex having count(id)>2;

    注意:

    分组查询所查询的要么是分组的字段,要么是聚合函数的字段,否则分组查询就没有任何意义

    分组查询中的条件里,where和having的区别就在于:

      Ⅰ.where 在分组之前进行限定,如果不满足条件,则不参与分组   having是在分组之后进行限定,如果不满足条件,则不会被查询出来

        Ⅱ.where后不可以跟聚合函数,having后可以跟聚合函数

4.分页查询

  limit子句:

    limit 开始的索引,每页查询的条数;

      显示学生的信息,每页显示三条记录:

      select * from student limit 0,3     --第一页(id为1,2,3的数据)

      select * from student limit 3,3     --第二页(id为4,5,6的数据)

      select * from student limit 6,3     --第三页(id为7,8,9的数据)

   查询的公式:

    开始的索引=(当前页码-1)* 每页显示的条数

   注意:

    limit是MySQL独有的分页查询的方法,Oracle、SQL server等数据库的分页查询的方法和MySQL的方法不同

 

 

 

 

 

 

posted @ 2019-11-19 14:35  T&K  阅读(184)  评论(0编辑  收藏  举报