MySQL --- DQL --- 案例

news2024/11/28 8:27:13

DQL的基本语法分为五个部分已经学习完毕了,接下来运用所掌握的DQL语句的语法来完成两个案例。

1. 案例一

案例:根据需求完成员工管理的条件分页查询

分析:根据输入的条件,查询第1页数据

  1. 在员工管理的列表上方有一些查询条件:员工姓名、员工性别,员工入职时间(开始时间~结束时间),这一看就是个范围查询

    • 姓名:张

    • 性别:男

    • 入职时间:2000-01-01 ~ 2015-12-31

  2. 除了查询条件外,在列表的下面还有一个分页条,这就涉及到了分页查询

    • 查询第1页数据(每页显示10条数据)

  3. 基于查询的结果,按照修改时间进行降序排序

结论:条件查询 + 分页查询 + 排序查询

SQL语句代码:  

-- 案例1:按需求完成员工管理的条件分页查询 -- 根据输入条件,查询第一页数据,每页展示10条记录
-- 输入条件:
      -- 姓名:张
      -- 性别:男
      -- 入职时间:2000-01-01   2015-12-31

-- 模糊匹配的含义指的是只要包含张就可以了,倒序排序就是降序(DESC)
-- 按住Ctrl + Alt + L:对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 10;

总结:在完成该案例的时候,一定要去参照页面原型和需求文档来编写对应的SQL语句,因为在               页面原型以及需求文档当中,就会清晰的描述对应的查询规则是什么样子的,我们只需要               根据需求来完成SQL语句的编写就可以。

1.9.2 案例二

案例:根据需求完成员工信息的统计

案例二:根据需求完成员工信息的统计,主要包括两项:第一项是员工性别的统计,第二项是员工职位的统计。这类的需求我们也叫图形报表就是来做数据统计,然后将统计好的数据以可视化的形式展示出来。

左边的是饼状图,在这幅图当中就展示出来了当前企业男性员工多少人,女性员工多少人,要以这种饼状图的形式直观的展示出来。其实这个需求也非常简单,我们只需要统计男性员工和女性员工多少人就可以了,我们把数据查询出来之后,返回给前端程序,前端程序再借助一些现成的组件报表库就可以完成报表的渲染展示了。图形报表组件就比较多了,我们就以百度开源的ECharts为例来做一个简单的分析,ECharts是百度开源的一款可视化的组件库,现在已经是Apache的孵化项目,所以我们可以看到域名现在是apache.org,在JS代码当中data属性指代的就是这个图形报表所展示的数据来源。做报表最重要最核心的就是数据。

思考:那这一块儿的数据从哪儿来呢?
回答:这里的数据是从数据库当中查询出来的。

分析:以上信息统计在开发中也叫图形报表(将统计好的数据以可视化的形式展示出来)

  • 员工性别统计:以饼状图的形式展示出企业男性员人数和女性员工人数

    • 只要查询出男性员工和女性员工各自有多少人就可以了

  • 员工职位统计:以柱状图的形式展示各职位的在岗人数

    • 只要查询出各个职位有多少人就可以了

分组查询  +  聚合函数

-- 案例2-1:根据需求,完成员工性别信息的统计 -- count(*)
select gender,count(*) from tb_emp group by gender;
-- 前端组件最终所需要的是男性员工多少人,女性员工多少人,我们还需要在SQL语句当中将1转化为男性员工,2转化为女性员工
-- 提问:此时怎么将1转化为男性员工,2转化为女性员工呢?
-- 回答:我们可以借助于MySQL当中提供的一个流程控制函数叫if(),在if()这个流程控制函数当中我们可以传递三个参数
-- 第一个需要传递一个条件表达式,第二个参数指代的是条件表达式为true的取值,第三个代表的是条件表达式为false的取值
-- 也就是说,它会根据条件表达式进行一个判断,如果条件表达式为true取第二个值,如果条件表达式为false取第三个值
-- if(条件表达式,true取值,false取值),使用if条件判断进行转换
-- if(表达式, tvalue, fvalue) :当表达式为true时,取值tvalue;当表达式为false时,取值fvalue
-- 那此时我们就可以基于if()这个流程控制函数把这块儿的SQL语句进行一个改造
select if(gender = 1,'男性员工', '女性员工') as 性别,count(*) as 人数 from tb_emp group by gender;


-- 案例2-2:根据需求,完成员工职位信息的统计
select job,count(*) from tb_emp group by job;
-- job,说明: 1 班主任 ,2 讲师, 3 学工主管, 4 教研主管
-- 提问:这里怎么进行职位的转换呢?
-- 回答:这里我们可以借助于MySQL当中提供的另外一个流程控制函数叫case来解决
-- case的语法:在case之后跟上一个表达式,后面跟上一个关键字when,如果这个表达式的值为1,后面再加上一个关键字then取结果1...
-- 后面还可以继续加when...then...,后面再加上一个else,就代表如果前面的这些表达式都没有匹配上的那我就取最后的这个默认值
-- 最后语法结束来一个end
-- case 表达式 when 值1 then 结果1 when 值2 then 结果2 ... else result end
-- 该语法与Java当中的switch语句有些类似
-- case 表达式 when 值1 then 结果1  [when 值2  then  结果2 ...]  [else result]  end
-- 接下来就基于case这个流程控制函数对这里的SQL语句进行一个改造
-- 直接在job前面加上一个case,这个job字段就是这个表达式
select
(case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管' when 4 then '教研主管' else '无业游民' end) 职位
, count(*) as 人数
from tb_emp
group by job;

 DQL语句小结:

第一个部分,基本查询,在基本查询当中我们主要来指定从哪一张表当来查询返回哪些字段,多个字段之间使用逗号分隔,如果我们想给这个字段起别名,只需要在字段之后跟上关键字as,as之后跟上别名就可以。

第二个部分条件查询,在where关键字之后跟上条件列表,在构建条件时最重要就是使用各种各样的运算符,比如像范围查询的between....and....,like模糊匹配,判断null值 is null等等。如果要组装多个条件,还要使用and或者or连接。

第三个部分分组查询group by,两点注意事项:1.在分组之后查询返回的字段一般为分组字段和聚合函数。2.关于where和having的区别:where是在分组之前执行,而having是在分组之后执行,而且where之后不能使用聚合函数,而having可以。

第四个部分排序查询order by,在order by之后来指定排序的字段和排序的方式。如果是多字段排序,中间使用逗号分隔,后面再指定第二个字段。只有当第一个字段值相同时,才会根据第二个字段来排序。

最后一个部分就是分页查询,对应的关键字是limit,limit之后跟上两个参数,一个参数是起始索引,另外一个参数是每页展示记录数。起始索引默认是从0开始的。

起始索引 = (页码 - 1) * 每页展示的记录数

DQL语句是整个SQL语句当中使用最为频繁最为重要的SQL语句!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springMVC第一次作业及练习

1、首先我们导入网站的项目进行测试时网址直接输入教程给的localhost:8080/springmvc/index.jsp 会是一片空白,把jsp删掉就好。因为加上jsp会直接访问jsp页面,此时的页面没有被服务器处理。 2、测试无误后就开始跟教程走 两个xml文件的配置&#xff1a…

超实用的开源自动化测试框架强烈推荐

随着计算机技术人员的大量增加,通过编写代码来进行测试成为一种更为高效的测试方式,由此而诞生了以计算机语言为基础的自动化测试方案,当然测试工程师需要具备代码能力。 今天我们就结合当前的主流编程语言,分别三种环境下各自的自…

触摸屏与三菱PLC之间无线MODBUS通讯实例

在工厂里,触摸屏往往位于程控室内,作为控制多个不同位置PLC的主站设备。因为触摸屏和plc所处位置距离较为分散,重新铺设电缆线工期长,成本高,故采用无线方式解决触摸屏与PLC之间的通讯问题。 一、方案概述 本方案是威…

最近颁发的“吴文俊奖”,见证了中国AI走向产业之路

“任何足够先进的技术,初看起来都与魔法无异”——这是著名科幻作家克拉克总结的第三定律。 今年以来ChatGPT掀起的智能交互变革,大语言模型的智能涌现能力,在很多人眼里,真的就像魔法一样。 当然,大家心知肚明&#x…

环评制图丨最新导则下的生态系统、土地利用、植被覆盖、适宜生境分布图等制图

根据最新生态环境影响评价导则,结合生态环评内容庞杂、综合性强的特点,以既包括陆域、又包括水域的项目为主要案例,对生态环评的具体流程及所需内容进行系统阐述。利用Rstudio、Fragstats等软件分析计算生态环评中所需各种指数,利…

python计算分类模型的评价指标

目录 1、混淆矩阵 2、代码实现 2.1、OA 2.2、AA 2.3、kappa 2.4、用户精度(User Accuracy, UA) 2.5、生产者精度(Producer Accuracy, PA) 2.6、f1_score 2.7、混淆矩阵 2.8、分类报告 1、混淆矩阵 以二分类问题为例,混淆矩阵表现形式如下: T…

Linux系统下的文件操作

目录 一、文件理解 二、系统级的文件操作 1、打开open 2、关闭close 3、写入write 4、读取read 三、文件描述符 四、重定向 1、dup2函数 2、追加重定向 3、输入重定向 五、缓冲区 1、缓冲区存在的意义 2、缓冲区的刷新策略 一、文件理解 在Linux中,有…

Linux多线程(2)线程安全(同步与互斥)

1.线程安全 概念 在多线程程序中,涉及到了对共享资源的操作,则有可能导致数据的二义性,而线程安全指的是,就算对共享资源进行操作也不会导致数据二义。 总结:多线程中对共享资源的操作不会出现问题。 实现:…

【AUTOSA】

目录 一、概述 二、限制与约束 三、功能描述 3.1 网络通信模式请求的转换 3.2 当前网络通信方式的输出 3.3 外围设备的控制 3.3.1 以太网接口控制器 3.4 多网络 3.5 网络模式状态机 3.5.1 初始化 3.5.2 在亚状态ETHSM_STATE_OFFLINE中的行为 3.5.3 子状态ETHSM_STA…

深入学习MYSQL-数据操纵及视图

前言 本博客中的例子和文字大部分来源于书籍《mysql必会知识》,后续会根据更多的书籍不断完善此笔记。 插入操作 可以这种方式向数据库插入两条数据,mysql和pg都支持这种写法。在实战中我们应该更多的使用这种写法,因为数据库的批量操作会…

TCP之滑动窗口和流量控制

TCP 利用发送字节数和接收字节数,这个二元组的唯一性保证顺序。讨论下保证顺序的具体算法,以及如何在保证顺序的基础上,同时追求更高的吞吐量。——TCP 的滑动窗口算法。 TCP 作为一个传输层协议,最核心的能力是传输。传输需要保证…

前端CSS学习(一)

1、基础认知 CSS概述&#xff1a;CSS:层叠样式表(Cascading style sheets)CSS作用是给页面中的HTML标签设置样式&#xff0c;起到美化修饰网页的作用CSS语法规则&#xff1a;CsS写在style标签中&#xff0c;style标签一般写在head标签里面&#xff0c; title 标签下面<!DOC…

AI类软件项目的应用场景

AI类的APP可以做很多事情&#xff0c;现在在很多业行都有具体的应用&#xff0c;从语音识别、图像识别到智能客服等都是不错的应用方向&#xff0c;在AI项目的时候一定要注意用户隐私&#xff0c;否则可能会带来不少潜在的问题。今天和大家分享一下这方面的内容&#xff0c;希望…

Call for Papers丨第三届GLB@KDD‘23 Workshop

鉴于介绍新数据集和Benchmark研究往往需要不同于常规论文的评审标准&#xff0c;计算机视觉和自然语言处理领域&#xff0c;以及最近的NeurIPS会议&#xff0c;都有专门致力于建立新Benchmark数据集和任务的Conference Track。然而在图机器学习领域&#xff0c;我们还没有类似的…

在 IDEA 中创建 Spring Boot 项目的方式(详细步骤教程)

开发环境 以下是我的开发环境 JDK 1.8Maven 3.6.3IDEA 2019&#xff08;2019 无所畏惧&#xff0c;即使现在已经 2023 年了哈哈哈&#xff09; 使用 Maven 的方式创建 Spring Boot 项目 下面的内容可能会因 IDEA 版本不同&#xff0c;而有些选项不同&#xff0c;但是大同小…

若依定制化改造

若依定制化改造 1 前端1.1 去除开屏加载动画1.2 去除登录时验证码1.3 修改网站标题&#xff08;主要是去除“若依”字样&#xff09; 2 后端2.1 用本地缓存替换Redis&#xff08;未完成&#xff09; 1 前端 1.1 去除开屏加载动画 做法&#xff1a; 效果&#xff1a; 这样子那…

契约锁助力公立医院“电子病历”评级,6大应用场景助力评审过关

2019年以来&#xff0c;公立医院每年绩效考核必须要过“电子病历关”&#xff0c;国家卫健委要求所有三级医院电子病历评级要达到4级以上&#xff0c;二级医院要达到3级以上。《电子病历系统应用水平分级评价管理办法&#xff08;试行&#xff09;及评价标准&#xff08;试行&a…

不可不知的脑网络

前言 人们常说&#xff0c;大脑是人类已知的最复杂的网络。人类大脑由大约1000亿个(1011个)神经元组成&#xff0c;由大约100万亿个(1014个)突触连接&#xff0c;这些神经元在多个空间尺度上进行组织&#xff0c;在多个时间尺度上进行功能交互。这个庞大的系统是我们所有思想、…

Prompt learning 教学[基础篇]:prompt基本原则以及使用场景技巧助力你更好使用chatgpt,得到你想要的答案

Prompt learning 教学[基础篇]&#xff1a;prompt基本原则以及使用场景技巧助力你更好使用chatgpt&#xff0c;得到你想要的答案 如果你想系统学习 如果你对 AI 和 Prompt Engineering 不是很了解&#xff0c;甚至连 ChatGPT 也不是很了解&#xff0c;那我建议你从基础篇开始读…

GPS定位与IP地址定位

在日常生活中&#xff0c;常用的定位技术包括GPS定位、基站定位与IP地址定位​、WIFI定位。 关于GPS定位 GPS(Global Positioning System&#xff0c;全球定位系统)起始于1958年美国军方的一个项目&#xff0c;1964年投入使用。20世纪70年代美国陆海空三军联合研制了新一代卫…