MySQL学习:DQL:查询语句

1、排序查询
ORDER BY 排序字段1 排序方式1,排序字段2 排序方式2;

排序方式:

ASC:升序,默认的。

eg:SELECT * FROM student ORDER BY math;

    SELECT * FROM student ORDER BY math ASC;

DESC:降序。

eg:SELECT * FROM student ORDER BY math DESC;

– 按照数学成绩排名,如果数学成绩一样,则按照英语成绩排名

SELECT * FROM student ORDER BY math ASC,english ASC;

注意:

如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件

2、聚合函数:将一列数据作为一个整体,进行纵向计算。
1、count:计算个数

一般选择非空的列:主键

count(*)(一列中有不为null的,就算作一个)(不推荐)

eg:SELECT COUNT(NAME) FROM student;

    SELECT COUNT(english) FROM student;

    SELECT COUNT(IFNULL(english,0)) FROM student;

2、max:计算最大值

eg:SELECT MAX(math) FROM student;

3、min:计算最小值

eg:SELECT MIN(math) FROM student;

4、sum:计算和

eg:SELECT SUM(math) FROM student;(直接可排除null值进行计算)

5、avg:计算平均值

eg:SELECT AVG(math) FROM student;

*注意:聚合函数的计算会排除null值

解决方案:
1、选择不包含null的列进行计算

2、ifnull函数

3、分组查询:
1、语法:group by 分组字段

eg:SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex;

2、注意:

1、分组之后查询的字段:分组字段,聚合函数

2、分组之前对条件进行一些限定

where和having的区别:
1、where在分组之前进行限定,如果不满足条件,则不参与分组。

having在分组之后进行判定,如果不满足结果,总不会被查询出来

2、where之后不可以跟聚合函数,having可以进行聚合函数的判定

–小于70分不参与分组

SELECT sex,AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

–小于70分不参与分组,人数要大于2个人

SELECT sex,AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;

SELECT sex,AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

4、分页查询
1、语法:limit 开始的索引,每页查询的条数;

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

– 每页显示3条记录

SELECT * FROM student LIMIT 0,3;-- 第一页

SELECT * FROM student LIMIT 3,3;-- 第二页

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

SELECgai’nT * FROM student LIMIT 6,3;-- 第三页

3、limit是一个mysql分页操作的“方言”

发布了25 篇原创文章 · 获赞 2 · 访问量 355

猜你喜欢

转载自blog.csdn.net/qq_41628448/article/details/104497563