✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:乐趣国学的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:MySQL数据库学习之旅
✨特色专栏:国学周更-心性养成之路
🥭本文内容:【MySQL】使用DQL命令查询数据(二)
更多内容点击👇
【MySQL】使用DQL命令查询数据(一)
目录
1、分组查询
2、HAVING子句
3、LIMIT
1、分组查询
1)什么是分组查询
在实际的开发中,可能需要先对一组数据进行分组,然后再对每一组的数据进行操作,这时需要用到分组查询。
用 GROUP BY 语句根据一个或多个列对结果集进行分组。
2)GROUP BY 语法结构
select...from...group by...
3)关键字的执行顺序问题
select(4)...from(1)...where(2)...group by(3)...order by(5)...//顺序不能颠倒
4)案例编写
查询每个部门的部门编号和每个部门的工资和:
SELECT deptno,SUM(sal) FROM emp GROUP BY deptno;
查询每个部门的部门编号以及每个部门的人数:
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;
查询每个部门的部门编号以及每个部门工资大于1500的人数:
SELECT deptno,COUNT(*) FROM emp WHERE sal>2500 GROUP BY deptno;
5)重要规定
- GROUP BY子句可以包含任意数目的列。这使得能对分组进行嵌套, 为数据分组提供更细致的控制。
- 如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上 进行汇总。换句话说,在建立分组时,指定的所有列都一起计算(所以不能从个别的列取回数据)。
- GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在 GROUP BY子句中指定相同的表达式。不能使用别名。
- 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子 句中给出。
- 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。
- GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。
2、HAVING子句
1)什么是HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。
HAVING子句用于指定过滤分组结果(GROUP BY)或聚合计算结果的条件。
2)HAVING语法:
HAVING bool_expression
3)关键字的执行顺序问题
select(5)...from(1)...where(2)...group by(3)...order by(6)...having(4)...//顺序不能颠倒
4)案例编写
查询工资总和大于9000的部门编号以及工资和:
SELECT `deptno`,SUM(sal) AS sumSal FROM emp GROUP BY deptno HAVING sumSal>20000;
注:having与where的区别:
1)having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
2)having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
3、LIMIT
1)什么是 LIMIT 子句
LIMIT用来限定查询结果的起始行,以及总行数,强制 SELECT 语句返回指定的记录数。可以用来分页。
2)LIMIT语法
select...from...limit...
3)Limit子句参数用法
Limit接受一个或两个数字参数。参数必须是一个整数常量。
一个参数:它表示返回最大的记录数。从第一行开始算。
两个参数:参数1是指定第一个返回的记录行的索引+1,参数2是最后返回最大的记录数
4)查询顺序
查询语句书写顺序:select – from- where- group by- having- order by-limit
查询语句执行顺序:from - where -group by - having - select - order by-limit
5)Limit子句在MySQL中的性能分析
Limit子句高效率:避免全表扫描,提高查询效率。
MySQL的limit给分页带来了极大的方便,但数据量大的时候,limit的性能就急剧下降。
6)案例编写
查询5行记录,起始行从0开始
SELECT * FROM emp LIMIT 0,5;
查询10行记录,起始行从3开始
SELECT * FROM emp LIMIT 3,10;
码文不易,本篇文章就介绍到这里,如果想要学习更多数据库系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。文章来源:https://www.toymoban.com/news/detail-402049.html
文章来源地址https://www.toymoban.com/news/detail-402049.html
到了这里,关于6、【MySQL】使用DQL命令查询数据(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!