JavaWeb——MySQL-DQL(7/7)-案例(员工管理的条件分页查询、员工信息统计、DQL 语句重点回顾、流程控制函数应用)

目录

案例一:员工管理的条件分页查询

需求分析

SQL语句编写与执行

代码及运行结果

案例二:员工信息统计(报表统计)

员工性别统计 

需求分析

SQL语句编写与执行

员工职位统计

需求分析

SQL语句编写与执行

总结与回顾

DQL 语句重点回顾

流程控制函数应用

实际应用要点


案例一:员工管理的条件分页查询

需求分析

  • 查询条件:根据员工姓名(支持模糊匹配)、性别(精确查询)、入职时间(范围查询)进行搜索。员工姓名输入“张”,性别选择“男”,入职时间选择“2000年1月1号”到“2015年12月31号”。
  • 分页要求:查询第一页数据,每页展示10条记录,并根据最后修改时间(update_time)进行倒序排序。

SQL语句编写与执行

  • 构建查询条件
    • 模糊匹配姓名:使用LIKE关键字,在姓名前或后添加通配符(这里使用%),如name LIKE '%张%'
    • 精确匹配性别:性别字段gender为“男”,对应值为1,所以条件为gender = 1
    • 范围查询入职时间:使用BETWEEN AND,即entrydate BETWEEN '2000-01-01' AND '2015-12-31'
    • 组合条件:多个条件之间使用AND连接,完整的WHERE子句为WHERE name LIKE '%张%' AND gender = 1 AND hire_date BETWEEN '2000-01-01' AND '2015-12-31'
  • 添加分页与排序
    • 分页查询:使用LIMIT关键字,第一页起始索引为0,每页展示10条记录,所以LIMIT 0, 10
    • 排序操作:根据update_time倒序排序,使用ORDER BY update_time DESC。将分页和排序添加到查询语句中,完整的SQL语句为:

代码及运行结果

SELECT *
FROM tb_emp
WHERE name LIKE '%张%'
  AND gender = 1
  AND entrydate BETWEEN '2000-01-01' AND '2015-12-31'
ORDER BY update_time DESC
LIMIT 0, 10;
  • 执行结果:执行该语句,返回满足条件的10条记录,员工姓名包含“张”,性别为男,入职时间在指定范围内,且按更新时间倒序排列。若查询第二页,将起始索引改为10(根据公式“起始索引=(页码 - 1)×每页展示记录数”计算得出),即LIMIT 10, 10,再次执行可获取第二页数据。

案例二:员工信息统计(报表统计)

员工性别统计 

需求分析

        统计男性员工和女性员工的人数,以饼状图形式展示,需将查询结果中的性别代码(1和2)转换为对应的文字(男性员工、女性员工)。

SQL语句编写与执行

        使用分组查询和聚合函数:

        根据性别字段gender进行分组,使用COUNT(*)统计每组人数。查询语句为

SELECT gender, COUNT(*)
FROM tb_emp
GROUP BY gender;

执行结果返回性别代码及对应的人数(如1, 24表示男性员工有24人,2, 5表示女性员工有5人)。


        使用IF函数转换性别代码:

        为将性别代码转换为文字,使用IF函数。IF函数语法为IF(条件表达式, 值1, 值2),根据gender的值进行判断,如果gender = 1,则返回“男性员工”,否则返回“女性员工”。修改后的查询语句为

SELECT IF(gender = 1, '男性员工', '女性员工') AS 性别, COUNT(*)
FROM tb_emp
GROUP BY gender;

执行后返回结果为“男性员工, 24”和“女性员工, 5”,并添加别名“性别”使结果更清晰。

员工职位统计

需求分析

        统计班主任、讲师、教研主管、学工主管各职位的人数,对于未分配职位的情况进行单独统计,需将职位代码(1、2、3、4)转换为对应的职位名称。

SQL语句编写与执行

        分组聚合查询:根据职位字段job进行分组,使用COUNT(*)统计每组人数。初始查询语句为

SELECT job, COUNT(*)
FROM tb_emp
GROUP BY job;

执行结果返回职位代码及对应人数(如1, 5等)。

        使用CASE语句转换职位代码:由于职位代码需转换为名称,且分支较多,使用CASE语句。CASE语句语法为CASE WHEN 条件1 THEN 值1 WHEN 条件2 THEN 值2... ELSE 默认值 END

        根据job的值进行判断,当job = 1时返回“班主任”,job = 2时返回“讲师”,job = 3时返回“学工主管”,job = 4时返回“教研主管”,否则返回“未分配职位”。修改后的查询语句为:

SELECT CASE
           WHEN job = 1 THEN '班主任'
           WHEN job = 2 THEN '讲师'
           WHEN job = 3 THEN '学工主管'
           WHEN job = 4 THEN '教研主管'
           ELSE '未分配职位'
           END AS 职位,
       COUNT(*)
FROM tb_emp
GROUP BY job;

执行后返回各职位名称及对应的人数,如“班主任, 5”等,为报表展示提供了准确数据。

总结与回顾

DQL 语句重点回顾

  • DQL 语句主要包含基本查询、条件查询、分组查询、排序查询和分页查询五个部分。
  • 基本查询指定查询表和返回字段,可设置字段别名,多个字段用逗号分隔。
  • 条件查询通过WHERE添加条件,使用多种运算符构建条件,多个条件用ANDOR连接,注意空值判断用IS NULLIS NOT NULL
  • 分组查询用GROUP BY指定分组字段,HAVING进行分组后条件过滤,查询返回字段通常为分组字段和聚合函数,WHERE在分组前过滤且不能使用聚合函数,HAVING在分组后过滤且可使用聚合函数。
  • 排序查询用ORDER BY指定排序字段和方式(升序ASC或降序DESC,默认升序),多字段排序时,第一个字段值相同才按第二个字段排序。
  • 分页查询用LIMIT指定起始索引和每页记录数,起始索引从 0 开始,计算公式为 “起始索引 =(页码 - 1)× 每页展示记录数”。

流程控制函数应用

        在案例中使用了IFCASE两个流程控制函数。IF函数根据条件返回不同值,用于简单的二选一判断;CASE语句类似Java中的switch,可进行多条件分支判断,根据表达式的值返回不同结果,增强了查询结果的可读性和可用性。

实际应用要点

        编写 DQL 语句时,需根据业务需求准确选择查询类型和构建条件。

        如在员工管理系统中,根据用户输入的不同查询条件生成相应的条件查询语句,实现精准数据检索。在数据统计报表中,合理运用分组查询和聚合函数获取统计数据,并通过流程控制函数处理数据格式,使其符合报表展示要求。


END 


学习自:黑马程序员——JavaWeb课程 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值