06-mysql中的查询(排序、聚合函数、分组、分页)(第二章)

排序

  • 语法

    select * from 表名 order by1 asc|desc,列2 asc|desc,...
  • 将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推

  • 默认按照列值从小到大排列

  • asc从小到大排列,即升序

  • desc从大到小排序,即降序

  • 例子:查询男生的信息,按年龄从大到小排序

    select * from students where gender=1 order by age desc;

聚合函数

  • 为了快速得到统计数据,经常会用到如下5个聚合函数

  • 注意:聚合函数不能在 where 中使用

    • count(*)表示计算总行数,括号中写星与列名,结果是相同的

    • 查询学生的总数:

    select count(*) from students
    • max(列)表示求此列的最大值

    • 查询男生最大的年龄

    select max(age) from students where gender=1;

    • min(列)表示求此列的最小值

    • 查询男生中年龄最小的

    select min(age) from students where gender=1;

    • sum(列)表示求此列的和

    • 查询所有男生年龄的综合

    select sum(age) from students where gender=1;

    • avg(列)表示求此列的平均值

    • 查询所有学生的平均年龄

    select avg(age) from students;

分组

  • 按照字段分组,表示此字段相同的数据会被放到一个组中

  • 分组后,分组的依据列会显示在结果集中,其他列不会显示在结果集中

  • 可以对分组后的数据进行统计,做聚合运算

  • 语法:

    select1,列2,聚合... from 表名 group by1,列2...
  • 查询各个性别的人数

    select gender as 性别,count(*) from students group by gender;

  • 分组后的数据筛选:

    • 语法:
    select1,列2,聚合... from 表名 group by1,列2,列3... having1,...聚合...
    • 查询男生的总人数
    select gender as 性别,count(*) from students group by gender having gender=1;
    

  • where是对from后面指定的表进行数据筛选,属于对原始数据的筛选

  • having是对group by的结果进行筛选

分页

  • 在实际开发当中,往往数据都是很多的,要是在一页中显示数据是一件非常麻烦的事情,我们可以获取数据的部分行。

  • 语法:

    select * from 表名 limit start,count;
  • start: 从start开始,获取count条数据

  • start的索引是从0开始的。

  • 例子:获取前四个男生的信息

    select * from students where gender=1 limit 0,3;

  • 实际开发中我们会经常要对数据进行分页展示

    • 已知:每页显示m条数据,当前显示第n页

    • 分页公式:

    limit (n-1)  * n,m

猜你喜欢

转载自blog.csdn.net/pythoncodez/article/details/73695285