MySQL笔记——条件查询(排序、分组、聚合函数、分页)
排序
关键词:ORDER BY(排序只是一种显示方式,不会影响数据库中的数据顺序)
//语句格式 如果ASC/DESC不写 默认是 ASCSELECT * FROM 表 WHERE 字段=值 ORDER BY 字段 ASC/DESC
ASC |
升序(默认) |
DESC |
降序 |
1.单列排序:使用一个字段排序
//按照年龄降序排序 select * from king_hero order by age DESC;
2.组合排序
SELECT * FROM 表 WHERE 字段=值 ORDER BY 字段 ASC/DESC, ORDER BY 字段2 ASC/DESC……(优先按照第一个排序,如果第一个相同再按照第二个排序,以此内推)
//按照年龄升序排序,再按照上架时间升序排序select * from king_hero order by age ASC, online_time ASC;
聚合函数
聚合函数查询时纵向查询,他对一列的值进行查询返回结果。(集合函数会忽悠null,聚合函数是写在SELECT 后面)
count |
统计指定列记录数,记录为null不统计 |
sum |
计算指定列数值的和,如果不是数值类型,结果为0 |
max |
得到指定列最大值 |
min |
得到指定列最小值 |
avg |
得到指定列平均值,如果不是数值类型,结果为0 |
写法:SELECT 函数(字段) FROM 表
//统计指定列记录数//统计时由于null不统计,所以统计时建议用“*”不要用其他列select count(*) from king_hero;
//获取英雄最大年龄select max(age) from king_hero;
//得到所有英雄血量之和select sum(life) from king_hero;
max、min、avg 语法差不多就不再重复写了
分组
对查询数据进行分组,相同数据为一组;关键字:GROUP BY 、HAVING
分组的目的是为了统计,一是要配合聚合函数使用的;当我们使用某个字段进行分组时,要把对应字段分组查询出来,不然不知道是哪一个分组; HAVING是对分组后的数据进行条件的判断
所以我们一般写法:select 聚合函数(),分组字段 from 表 group by 分组字段 HAVING 条件
//统计每个阵营多少英雄select count(*), camp from king_hero GROUP BY camp;
// 统计每个阵营多少人,少于3个的英雄不显示select count(*), camp from king_hero GROUP BY camp HAVING count(*)>2;
分页
LIMIT :限制查询条数 注意 :放在最后面
写法:SELECT * FROM 表 LIMIT offset,length;
LIMIT 语法limit offset,length; or limit length;
offset |
偏移量,跳过前面多少条,默认为0 |
length |
获取多少条 |
//跳过前面4条,获取5条select * from king_hero limit 4,5;
使用场景:数据分页(比如我们在做一个商城系统时,前端需要显示商品信息,我们就给他分页数据,而不是全部返回给他)
赞 (0)