排序查询(P13)

/* 排序查询 SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]…;
排序方式
ASC:升序排列(默认值)
DESC:降序排列
*/
— 1.查询学生信息,按照年龄升序排列
SELECT * FROM stu order by age asc;

— 2.查询学生信息,按照数学成绩降序排列
SELECT * FROM stu order by math desc;
— 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,按照英语成绩升序排列
SELECT * FROM stu order by math desc,English asc;

如果有多个排序条件,只有第一个条件相同时才会启动第二个排序条件

 

聚合函数&分组查询

聚合函数语法:

!!!所有的NULL值都不能参与聚合函数的计算

举例来说 一列英语成绩分别为 10 20 30 40 50 空

找最小值的时候会

SELECT MIN(English) FROM stu;

stu为表名

会找到最小值为10而不是空

SELECT 聚合函数名(列名) FROM 表;

COUNT()统计的列名不能为空

/*
* COUNT 求数量 统计的列名不能为空
* 取值:(不能为空的解决办法)
1.主键
2. *(建议)
* MAX 求最大值
* MIN 求最小值
* SUM 求和
* AVG 求平均值
*/
— 1.统计班级一共有多少个学生
SELECT COUNT(*) FROM stu; — count统计的列名不能为空
— 2.查询数学成绩的最高分
SELECT MAX(math) FROM stu;
— 3.查询数学成绩的最低分
SELECT MIN(math) FROM stu;
— 4.查询数学成绩的总分
SELECT SUM(math) FROM stu;
— 5.查询数学成绩的平均分
SELECT AVG(math) FROM stu;
— 6.查询英语成绩的最低分
SELECT MIN(English) FROM stu;

 

分组查询语法

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]

注意:分组之后查询的字段是聚合函数和分组字段,查其他内容无意义

 

 例如 按性别分组分为男女 在查询的时候

SELECT name,sex, AVG(math) FROM stu GROUP BY sex;

查询了不参与分组的name 产生了如上图所示的结果是没有意义的

— 1.查询男同学和女同学各自的数学平均分

SELECT sex, AVG(math) FROM stu GROUP BY sex;
SELECT name,sex, AVG(math) FROM stu GROUP BY sex;

— 2.查询男同学和女同学各自的数学平均分以及各自的人数
SELECT sex, COUNT(*),AVG(math) FROM stu GROUP BY sex;
— 3.查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
SELECT sex, COUNT(*),AVG(math) FROM stu WHERE math>70 GROUP BY sex;
— 4.查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组后人数大于2
SELECT sex, COUNT(*),AVG(math) FROM stu WHERE math>70 GROUP BY sex HAVING COUNT(*)>2;

!!!!where 和 having的区别

1.执行时机不一样,where是分组之前进行限定,不满足where条件则不参与分组,而having是分组之后对结果进行过滤

2.可判断的条件不一样 where不能对聚合函数进行判断,having可以

执行顺序为 where>聚合函数>having

 

分页查询

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数

起始索引:从0开始

SELECT * FROM stu;
— 1.从0开始查询,查询3条数据
SELECT * FROM stu LIMIT 0,3;
— 2.每页显示3条数据,查询第1页数据
SELECT * FROM stu LIMIT 0,3;
— 3.每页显示3条数据,查询第2页数据
SELECT * FROM stu LIMIT 3,3;
— 4.每页显示3条数据,查询第3页数据
SELECT * FROM stu LIMIT 6,3;

— 起始索引=(当前页码-1)*每页的条目数!!!!!!!!

注意:limit是MySQL的方言,其他数据库不同

 

原文地址:http://www.cnblogs.com/Arkiya/p/16789559.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性