MySQL学习笔记之06-SQL的分类之DQL的查询语句

DQL:查询语句
1)排序查询

语法:order by 子句
order by 排序字段1 排序方式1,排序字段2 排序方式2...
排序方式:
	ASC:升序,默认
	DESC:降序
栗子:
select * from student order by math ASC; -- 升序,单条件
select * from student order by math ASC, english DESC; -- 多条件。数学成绩一样时,按照英语成绩来排名

注意:多条件排序时,只有当第一条件一样时,才会判断第二条件

2)聚合函数
将一列数据作为一个整体,进行 纵向 的运算
① count:计算个数

一般选择非空的列,比如主键
count(*)
select count(id) from student; -- 选择主键来计数,一般设置id为主键
select count(ifnull(english,0)) from student; -- 当选择的列中存在null值的时候,可以用ifnull关键字来处理
select count(*) from student;  -- 当选择的列中存在null值的时候,也可以选择这种方式(但是公司里有可能不让使用*)

② 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值
解决方案:
①选择不包含null值的列进行计算
②ifnull函数,将null值替换为其他值,比如0

3)分组查询

语法:group by 分组字段;
栗子:
-- 根据sex字段分组,分别查询男、女同学的数学平均分、人数
SELECT sex, AVG(math), COUNT(id) FROM student GROUP BY sex;

-- 按照sex字段分组,分别查询男、女同学的数学平均分,人数 要求:分数低于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;

注意:
① 分组之后查询的字段:分组字段、聚合函数
② where 和 having 的区别

1.where在分组之前限定,如果不满足这个条件就不参与分组,having是在分组之后限定,如果不满足结果则不会被查询出来。
2.where后不可以跟聚合函数,having可以进行聚合函数的判断。

4)分页查询

语法:limit 开始的索引,查询的条数;
公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
-- 每页显示3条记录
SELECT * FROM student LIMIT 0, 3; -- 显示第1页
SELECT * FROM student LIMIT 3, 3; -- 显示第2页
SELECT * FROM student LIMIT 6, 3; -- 显示第3页

注意:limit关键字是MySQL实现分页查询的一个"方言"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值