我们都知道SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。其中DQL也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用,共同构成了DQL查询语言的核心部分。本文我们就来聊一聊DQL查询语句。
下面我们就通过4个应用实例,来深入分析DQL查询语句。
1.排序
select 字段 from 表名 where 字段=值 order by 字段 asc|desc;
asc 升序
desc 降序
组合排序
select * from 表名 order by age desc ,math desc;
2.聚合函数
max(列名):求这一列的最大值
min(列名):求这一列的最小值
avg(列名):求这一列的平均值
count(列名):统计这一列有多少条记录
sum(列名):对这一列求总和
-- 查询学生总数
select count(id) as 总人数 from student;
select count(*) as 总人数 from student;
-- 查询年龄大于 20 的总数
select count(*) from student where age>20;
-- 查询数学成绩总分
select sum(math) 总分 from student;
-- 查询数学成绩平均分
select avg(math) 平均分 from student;
-- 查询数学成绩最高分
select max(math) 最高分 from student;
-- 查询数学成绩最低分
select min(math) 最低分 from student;
3.limit语句
LIMIT 是限制的意思,所以 LIMIT 的作用就是限制查询记录的条数。
LIMIT offset,length;
offset:起始行数,从 0 开始计数,如果省略,默认就是 0
length: 返回的行数
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子句][LIMIT 子句];
-- 查询学生表中数据,从第 3 条开始显示,显示 6 条。
select * from student3 limit 2,6;
-- 如果第一个参数是 0 可以省略写:
select * from student3 limit 5;
4.分组
分组查询是指使用 GROUP BY 语句对查询信息进行分组,相同数据作为一组
SELECT 字段 1,字段 2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
GROUP BY 怎么分组的?
将分组字段结果中相同内容作为一组,如按性别将学生分成 2 组。
-- 按性别进行分组,求男生和女生数学的平均分
select sex, avg(math) from student3 group by sex;
having 与 where 的区别
子名 作用
where 子句 1) 对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,即先过滤
再分组。
2) where 后面不可以使用聚合函数
having 子句 1) having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。
2) having 后面可以使用聚合函数
事实上,DQL查询语句的用法远不止于此,我们除了要掌握DQL的基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块,还要学会DQL语句的标准语法,才能真正意义上掌握DQL查询语句。在本站的MySQL教程中,对其他类别的SQL查询语句也有详细的介绍,感兴趣的小伙伴可以前去观看学习,拓展新的知识领域。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习