MySQL --- DQL --- 案例

这篇具有很好参考价值的文章主要介绍了MySQL --- DQL --- 案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1. 案例一

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

MySQL --- DQL --- 案例

MySQL --- DQL --- 案例

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

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

    • 姓名:张

    • 性别:男

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

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

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

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

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

MySQL --- DQL --- 案例

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 案例二

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

MySQL --- DQL --- 案例

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

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

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

MySQL --- DQL --- 案例

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

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

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

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

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

分组查询  +  聚合函数

-- 案例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;

MySQL --- DQL --- 案例

 DQL语句小结:

MySQL --- 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语句!!!文章来源地址https://www.toymoban.com/news/detail-438788.html

到了这里,关于MySQL --- DQL --- 案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql入门:ddl,dml,dql,dcl语句基本操作介绍

    📌————本章重点————📌 🔗了解数据库的概念; 🔗掌握得到了,dml,读起来,dcl语句的基本使用; 🔗掌握具体实现细节; 🔗了解具体应用场景; ✨————————————✨ 什么是数据库 数据库是数据存放的仓库,用来存储要管理的事务。现在数据库也被认为是

    2024年02月04日
    浏览(86)
  • web安全是什么?主要分为哪几部分?

    网络安全是一个非常庞大的体系,范围非常之大,被分为很多种类型,web安全就是其中之一,也是网络安全技术中非常重要的领域。那么web安全是什么?主要分为哪几部分?以下是详细的内容介绍。 什么是web安全? 随着web2.0、社交网络、微博等等一系列新型的互联网产品的诞生

    2024年02月09日
    浏览(46)
  • Mysql 数据库DQL 数据查询语言 SELECT 基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询——包含DQL所有查询语句。吐血分享。

    DQL:数据查询语言; 用来对表内的数据进行查找 。Database Query Language SQL语句分为:基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询。  可以发现name字段就只剩下一个张三了;   条件: 条件查询—比较运算符 比较运算符 功能 大于 = 大于等于 小于 = 小于等

    2024年01月19日
    浏览(56)
  • 2-MySQL基本语法

    上文说到,数据库的安装和连接,接下来将给大家讲解MySQL数据库的基本语法及数据的类型 1.基本语法 (1).查看当前所有数据库 : show databases; (2).创建数据库 create database; 数据库名; 例如: create database gzy; (3).如果不确定数据库是否存在,应在创建之前加上判断,如

    2024年02月08日
    浏览(27)
  • 今天吃什么小游戏(基于Flask框架搭建的简单应用程序,用于随机选择午餐选项。代码分为两部分:Python部分和HTML模板部分)

    今天吃什么 一个简单有趣的外卖点饭网站,不知道吃什么的时候,都可以用它自动决定你要吃的,包括各种烧烤、火锅、螺蛳粉、刀削面、小笼包、麦当劳等午餐全部都在内。点击开始它会随意调出不同的午餐,点击停止就会挑选一个你准备要吃的,如果没有想吃的,你还能

    2024年01月16日
    浏览(46)
  • 第八篇:SQL语法-DQL-数据查询语言

    DQL英文全称是Data QueryLanguage(数据查询语言),用来查询数据库中表的记录 查询: select DQL主要包含以下操作 基本查询 条件查询 分组查询 在select之后指定字段名,如果有多个则用逗号分隔,用于查询表中指定字段的数据 在select之后使用【 通配符* 】,用于查询 同一

    2024年02月20日
    浏览(46)
  • 一、docker及mysql基本语法

    (1)拉取镜像: docker pull 镜像ID/image (2)查看当前docker中的镜像: docker images (3)删除镜像: docker rmi 镜像ID/image (4)创建容器(以命令行进入容器): docker run -it 镜像ID/image /bin/bash -i交互式操作; -t终端; /bin/bash:放在镜像名后面的是命令,这里我们希望有个交互式

    2024年02月12日
    浏览(24)
  • MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇

    今天来分享一期MySQL的基本用法(增删改查 对库 对表 对值) 目录 MySQL的基础概念  SQL 语言的主要分类 DDL(数据定义语言) DML(数据操控语言) DQL(数据库查询语言) DCL(数据库控制语言) 基础语法 增 库的操作 表操作 列操作 值操作 删 删除库 删除表 删除值 改 修改表名 更新数

    2024年03月16日
    浏览(48)
  • 二、SQL-5.DQL-8).案例练习

    2024年02月15日
    浏览(25)
  • DQL的基本查询

    DQL ( Data Query Language )数据查询语言查询是使用频率最高的一个操作, 可以从一个表中查询数据,也可以从多个表中查询数据   基础查询   语法: select 查询列表 from 表名 ; 特点: 查询列表可以是:表中的字段、常量、表达式、函数 查询的结果是一个虚拟的表格 查询结果

    2024年01月17日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包