0


6、【MySQL】使用DQL命令查询数据(二)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。

🍎个人主页:乐趣国学的博客

🍊个人信条:不迁怒,不贰过。小知识,大智慧。

💞当前专栏:MySQL数据库学习之旅

✨特色专栏:国学周更-心性养成之路

🥭本文内容:【MySQL】使用DQL命令查询数据(二)

更多内容点击👇

                   ​​​​【MySQL】使用DQL命令查询数据(一)

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知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的**第四栏目**:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

标签: mysql 数据库 sql

本文转载自: https://blog.csdn.net/hh867308122/article/details/127403717
版权归原作者 乐趣国学 所有, 如有侵权,请联系我们删除。

“6、【MySQL】使用DQL命令查询数据(二)”的评论:

还没有评论