MySQL-6:查询语句
2019-04-03 本文已影响0人
Deque
1、DQL:查询语句:
- 1.排序查询
- 2.聚合函数
- 3.分组查询
- 4.分页查询
2、约束
3、多表之间的关系
4、范式
5、数据库的备份和还原
DQL:查询语句:
- 1.排序查询
- 语法:
order by
子句
order by 排序字段1 排序方式1, 排序字段2,排序方式2...
- 排序方式:
- ASC:升序,默认的。
- DESC:降序
- 语法:
-- 在student表中按照数学成绩(math)升序排名
SELECT * FROM student ORDER BY math;
SELECT * FROM student ORDER BY math ASC;
升序查询结果
-- 在student表中按照数学成绩(math)降序排名
SELECT * FROM student ORDER BY math DESC;
降序查询结果
-- 在student表中按照数据成绩排名,如果数学(math)成绩一样,则按照英语(english)成绩排名
SELECT * FROM student ORDER BY math ASC, english ASC;
查询结果
- 注意:
如果有多个排序条件,则当前边的田间值一样时,才会判断第二条件。
- 2.聚合函数:将一列数据作为一个整体,进行纵向的计算
-
count
:计算个数
- 一般选择非空的列:主键
- count(*)
-
SELECT COUNT(NAME) FROM student;
SELECT COUNT(english) FROM student;
SELECT COUNT(IFNULL(english,0)english) FROM student;
-
max
:计算最大值
SELECT MAX(math) FROM student;
-
min
:计算最小值
SELECT MIN(math) FROM student;
-
sum
:求和
SELECT SUM(math) FROM student;
-
avg
:计算平均值
SELECT AVG(math) FROM student;
注意:聚合函数的计算,会排除null值。
解决方法:
1、选择不包含非空的列计算
2、IFNULL函数
- 3.分组查询
- 语法:group by 分组字段;
-- 按照性别分组,分别查询男、女同学的数学平均分
SELECT gender,AVG(math) FROM student GROUP BY gender;
查询结果
-- 按照性别分组,分别查询男、女同学的数学平均分,分别的人数
SELECT gender,AVG(math),COUNT(id) FROM student GROUP BY gender;
查询结果
-- 按照性别分组,分别查询男、女同学的数学平均分,分别的人数(要求:分数低于70分的人,不参与分组)
SELECT gender,AVG(math),COUNT(id) FROM student WHERE math >70 GROUP BY gender;
查询结果
-- 按照性别分组,分别查询男、女同学的数学平均分,分别的人数(要求:分数低于70分的人,不参与分组) 分组之后,人数要大于2个人
SELECT gender,AVG(math),COUNT(id) FROM student WHERE math >70 GROUP BY gender HAVING COUNT(id) >2;
-- 一般在聚合函数后面取一个别名方便查询
SELECT gender,AVG(math),COUNT(id) pnum FROM student WHERE math >70 GROUP BY gender HAVING pnum > 2;
查询结果
- 注意:
- 分组之后查询的字段:分组字段、集合函数
- where 和 having 的区别(面试常考)?
1.where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来。- where 后不可以跟聚合函数,having可以进行集合函数的判断。
- 4.分页查询
1.语法:limit
开始的索引,每页查询的条数;
2.公式:开始的索引 = (当前的页面 - 1)* 每条显示的条数
-- 分页查询
-- 每页显示3条记录
SELECT * FROM student LIMIT 0,3; -- 第一页
SELECT * FROM student LIMIT 3,3; -- 第二页
-- 公式:开始的索引 = (当前的页面 - 1)* 每条显示的条数
SELECT * FROM student LIMIT i+n,n
SELECT * FROM student LIMIT 6,3;
3.分页操作的,limit
是一个“方言”,只能在MySQL使用。