【JavaWeb】Day39.MySQL概述——数据库设计-DQL(二)

数据库设计-DQL

聚合函数

聚合函数查询就是纵向查询,它是对一列的值进行计算,然后返回一个结果值。(将一列数据作为一个整体,进行纵向计算)

语法:

select  聚合函数(字段列表)  from  表名 ;

 注意 : 聚合函数会忽略空值,对NULL值不作为统计。

  • count :按照列去统计有多少行数据。

          在根据指定的列统计的时候,如果这一列中有null的行,该行不会被统计在其中。

  • sum :计算指定列的数值和,如果不是数值类型,那么计算结果为0
  • max :计算指定列的最大值
  • min :计算指定列的最小值
  • avg :计算指定列的平均值

案例1:统计该企业员工数量

~~~mysql
# count(字段)
select count(id) from tb_emp;-- 结果:29
select count(job) from tb_emp;-- 结果:28 (聚合函数对NULL值不做计算)# count(常量)
select count(0) from tb_emp;
select count('A') from tb_emp;# count(*)  推荐此写法(MySQL底层进行了优化)
select count(*) from tb_emp;
~~~

案例2:统计该企业最早入职的员工(使用子嵌套)

案例3:统计该企业最迟入职的员工

案例4:统计该企业员工 ID 的平均值

案例5:统计该企业员工的 ID 之和

分组查询

分组: 按照某一列或者某几列,把相同的数据进行合并输出。

       分组其实就是按列进行分类(指定列下相同的数据归为一类),然后可以对分类完的数据进行合并计算。分组查询通常会使用聚合函数进行计算。

语法:

select  字段列表  from  表名  [where 条件]  group by 分组字段名  [having 分组后过滤条件];

案例1:根据性别分组 , 统计男性和女性员工的数量

select gender, count(*) from tb_emp

group by gender; -- 按照gender字段进行分组(gender字段下相同的数据归为一组)

案例2:查询入职时间在 '2015-01-01' (包含) 以前的员工 , 并对结果根据职位分组 , 获取员工数量大于等于2的职位

注意事项:

• 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

 • 执行顺序:where > 聚合函数 > having

where与having区别:

- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

- 判断条件不同:where不能对聚合函数进行判断,而having可以。

排序查询

排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。

语法:

select  字段列表  

from   表名  

[where  条件列表]

[group by  分组字段 ]

order  by  字段1  排序方式1 , 字段2  排序方式2 … ;

排序方式:

 ASC :升序(默认值)

 DESC:降序

案例1:根据入职时间, 对员工进行升序排序

注意事项:如果是升序, 可以不指定排序方式ASC

案例2:根据入职时间,对员工进行降序排序

案例3:根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序

注意事项:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

分页查询

       分页操作在业务系统开发时,也是非常常见的一个功能,日常我们在网站中看到的各种各样的分页条,后台也都需要借助于数据库的分页操作。

分页查询语法:

select  字段列表  from   表名  limit  起始索引, 查询记录数 ;

案例1:从起始索引0开始查询员工数据, 每页展示5条记录

案例2:查询 第1页 员工数据, 每页展示5条记录

案例3:查询 第2页 员工数据, 每页展示5条记录

注意事项:

1. 起始索引从0开始。        计算公式 :   起始索引 = (查询页码 - 1)* 每页显示记录数

2. 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT

3. 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit  条数

补充:

if(表达式, tvalue, fvalue) :当表达式为true时,取值tvalue;当表达式为false时,取值fvalue

员工性别统计:

 case   表达式    when   值1   then  结果1   [when 值2  then  结果2 ...]     [else result]     end

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++的stack和queue类(一):适配器模式、双端队列与优先级队列

目录 基本概念 stack的使用 queue的使用 适配器模式 stack.h test.cpp 双端队列-deque 仿函数 优先队列 priority_queue的使用 queue.h文件 stack.h文件 test.cpp文件 日期类的比较 商品的比较 结论 基本概念 1、stack和queue不是容器而是容器适配器&…

unable to find a medium containing a live file system解决办法!

背景: 用Ventoy制作U盘系统安装盘,只需要把ISO镜像拷进去就可以,可以放多少个镜像取决于U盘的大小,无需重复制作。Ventoy 将U盘的第一个分区默认格式化为exFAT文件系统来存放ISO文件。 但是,今天鲲鹏920平台安装银河…

实景三维技术在推进城市全域数字化转型的作用

4月2日,国家数据局发布《深化智慧城市发展推进城市全域数字化转型的指导意见(征求意见稿)》(下称:《指导意见》),向社会公开征求意见。 《指导意见》作为推进城市数字化转型的重要文件&#xf…

蓝桥杯 交通信号 2022研究生组

问题: Dijstra算法变形题,有向边分正行和逆行方向,注意逆行的绿灯时间是正行的红灯时间。 这题的关键是理清从当前节点出发,到下一个节点是哪一时刻,理清这一点后,再跑Dijstra算法求最短路。 假设curr_t时…

美团一面,面试官让介绍AQS原理并手写一个同步器,直接凉了

写在开头 今天在牛客上看到了一个帖子,一个网友吐槽美团一面上来就让手撕同步器,没整出来,结果面试直接凉凉。 就此联想到一周前写的一篇关于AQS知识点解析的博文,当时也曾埋下伏笔说后面会根据AQS的原理实现一个自定义的同步器…

C++笔记(函数重载)

目录 引入: 定义: 易错案例: 引入: 对于实现相似功能的函数,在命名时,我们常会出现命名重复的问题。对于C语言,编译器遇到这种命名重复的情况,会进行报错。而我们的C为了更方便程…

前端开发中地图定位与距离计算的应用实践

前端开发中地图定位与距离计算的应用实践 在前端开发中,地图功能的应用日益广泛,无论是用户位置的定位、目标距离的计算,还是地址的解析与展示,地图都发挥着不可替代的作用。本文将重点介绍前端开发中实现地图定位、距离计算以及…

Docker部署前后端分离项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 开发环境篇 ✨特色专栏: M…

Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftWindow.cs using UnityEngine.UI; using TMPro; using UnityEngin…

CentOS7.9创建本地yum源操作步骤报错解决方法

1.基础信息 CentOS7.9-mini最小化安装的系统,在离线安装rpm时候需要大量依赖,需要花费大量时间去查找依赖包。受于环境限制无法接入互联网使用公开yum源,于是便有了搭建本机yum源的想法,在网上下载CentOS7.9标准版“CentOS-7-x86_…

windows 系统下 mysql 数据库的下载与安装(包括升级安装)

windows 系统下 mysql 数据库的下载与安装(包括升级安装) 一、mysql 介绍: MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。 MySQL 是最流行的关系型数据库管理系统之一&#xf…

pyqt5 QScrollArea组件

本示例中,演示了QScrollArea的使用,以及QScrollBar的样式设定,在代码中使用setStyleSheet设置样式,记得要优先设置scrollArea,再设置窗口的样式,不然QScrollBar的样式会不起作用,使用QSS设置没有…

hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

分析: 在启动hadoop服务的时候,遇到了这个问题: hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 这个一看就是,密钥问题 于是ssh 主机名就行测试 需要输入密码,就说明这里有问…

A Note on LoRA

A Note on LoRA 摘要Additional InsightsPractical ImprovementsLooking Ahead 摘要 LoRA已成为一种首选的方法,用以高效地适应大型语言模型(LLM),其简便性和有效性令人瞩目。本文档扩展了原始LoRA论文,提供了最初未讨…

MySQL进阶之(七)EXPLAIN 详解

七、EXPLAIN 详解 7.1 查询性能那些事7.1.1 查看系统性能参数7.1.2 统计 SQL 的查询成本7.1.3 定位执行慢的 SQL:慢查询日志01、开启慢查询日志参数02、关闭慢查询日志03、删除慢查询日志 7.1.4 查看 SQL 执行成本:SHOW PROFILE 7.2 EXPLAIN 语句输出中各…

java程序 .exe启动nginx防止重复启动,已解决

java代码生成好的.exe启动nginx服务程序 根据nginx占用端口来解决nginx服务重复启动问题(下面代码了解代码逻辑后根据自己的业务需求修改即可) 代码: package org.example;import javax.swing.*; import java.awt.*; import java.io.*; …

蓝桥杯——16

学习视频&#xff1a;17-深搜的剪枝策略视频讲解_哔哩哔哩_bilibili #include<iostream> #include<cstring> using namespace std; int n, m; string maze[110]; bool vis[110][110]; int dir[4][2] { {0,1},{0,-1},{1,0},{-1,0} }; int ans 100000; bool in(in…

利用Python ARM网关仓储物流AGV小车控制器

在现代智慧物流体系中&#xff0c;高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关&#xff0c;并结合Python的二次开发能力&#xff0c;可以有效集成并强化物流管理系统的数据处理与通信功能&#xff0c…

基于springboot+vue实现的的成人教育教务系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

2024年河北省职业院校技能大赛高职组“信息安全管理与评估”赛项样题

培训、环境、资料、考证 公众号&#xff1a;Geek极安云科 网络安全群&#xff1a;775454947 网络系统管理群&#xff1a;223627079 网络建设与运维群&#xff1a;870959784 极安云科专注于技能提升&#xff0c;赋能 2024年广东省高校的技能提升&#xff0c;受赋能的客户院校均…