数据库(MySQL)—— DQL语句(聚合,分组,排序,分页)

数据库(MySQL)—— DQL语句(聚合,分组,排序,分页)

  • 聚合函数
    • 常见的聚合函数
    • 语法
  • 分组查询
    • 语法
  • 排序查询
    • 语法
  • 分页查询
    • 语法
  • DQL的执行顺序

我们今天来继续学习MySQL的DQL语句的聚合和分组查询,如果没看过上一篇的可以点击这里:

https://blog.csdn.net/qq_67693066/article/details/138371612

聚合函数

聚合函数将将一列数据作为一个整体,进行纵向计算。

常见的聚合函数

函数功能
COUNT统计指定列或所有列的数量,返回行数
MAX返回指定列的最大值
MIN返回指定列的最小值
AVG计算指定列的平均值
SUM计算指定列的总和

语法

SELECT 聚合函数(字段列表) FROM 表名 ;

注意 : NULL值是不参与所有聚合函数运算的

比如:统计该企业员工数量:

select count(*) from emp; -- 统计的是总记录数
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数

执行第一条语句的结果:
在这里插入图片描述
执行第二条语句的结果:
在这里插入图片描述
为什么会差一呢?因为有一个员工的idcard为空:
在这里插入图片描述
统计该企业员工的平均年龄:

select avg(age) from emp;

在这里插入图片描述统计该企业员工的最大年龄:

select max(age) from emp;

在这里插入图片描述 统计西安地区员工的年龄之和:

select sum(age) from emp where workaddress = '西安';

在这里插入图片描述

分组查询

语法

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];

where与having区别

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组
之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。

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

-- 根据性别分组 , 统计男性员工 和 女性员工的数量
select gender, count(*) from emp group by gender ;

在这里插入图片描述我们可以修改一下条件:根据性别分组 , 统计在西安的男性员工 和 女性员工的数量:

select gender, count(*) from emp where workaddress = '西安' group by gender ;

在这里插入图片描述
统计各个工作地址上班的男性及女性员工的数量:

select workaddress, gender, count(*) '数量' from emp group by gender , workaddress;

在这里插入图片描述查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址:

select workaddress, count(*) address_count from emp where age < 45 group by
workaddress having address_count >= 3;

在这里插入图片描述

排序查询

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

语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

排序方式:

ASC : 升序(默认值)
DESC: 降序

注意事项:

  • 如果是升序, 可以不指定排序方式ASC
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

根据年龄对公司的员工进行升序排序:

select * from emp order by age asc;
select * from emp order by age;

在这里插入图片描述
根据入职时间, 对员工进行降序排序:

select * from emp order by entrydate desc;

在这里插入图片描述根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序:

select * from emp order by age asc , entrydate desc;

在这里插入图片描述

分页查询

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

语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;

注意事项:

  • 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

查询第1页员工数据, 每页展示10条记录:

select * from emp limit 0,10;
select * from emp limit 10;

在这里插入图片描述
查询第2页员工数据, 每页展示10条记录 --------> (页码-1)*页展示记录数:

select * from emp limit 10,10;

在这里插入图片描述

DQL的执行顺序

我们之前写sql语句都只是按照编写顺序来书写的,但是实际执行的时候,并不是按照我们编写的顺序来执行的,而是有自己的执行顺序
在这里插入图片描述
我们可以来验证一下:

查询年龄大于15的员工姓名、年龄,并根据年龄进行升序排序。

select name , age from emp where age > 15 order by age asc;

我们可以用别名来证明,现在我们对emp取个别名,因为按照逻辑,先从from开始执行:

-- 给emp取一个别名em
select em.name ,em.age from emp em where em.age  > 15 order by em.age asc;

发现程序正常运行:
在这里插入图片描述

但是如果我们先给select中的age取了别名:
在这里插入图片描述

就会报错,说明select语句在from之后执行,但是如果是在order by里面使用就不会:
在这里插入图片描述这说明order by是在select之后执行的。

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

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

相关文章

c++容器与算法概述

容器与算法 每个标准库容器都提供了begin() end() 函数&#xff0c;分别返回容器的头部位置和尾部位置。 I/O 流 对于自定义的类型&#xff1a; struct Entry {std::string name;int number;};如果需要使用标准输出需要重载<< 运算符&#xff0c;特别注意&#xff1a…

《Redis使用手册之Lua脚本》

《Redis使用手册之Lua脚本》 EVAL&#xff1a;执行脚本 127.0.0.1:6379> eval “return ‘hello world’” 0 “hello world” 127.0.0.1:6379> eval “return redis.call(‘set’,KEYS[1],ARGV[1])” 1 “message” “hello world” OK 127.0.0.1:6379> get message…

「Pudding Monsters」Solution

简述题意 给定一个 n n n \times n nn 的棋盘&#xff0c;其中有 n n n 个棋子&#xff0c;每行每列恰好有一个棋子。 对于所有的 1 ≤ k ≤ n 1 \leq k \leq n 1≤k≤n&#xff0c;求有多少个 k k k \times k kk 的子棋盘中恰好有 k k k 个棋子&#xff0c;输出其总和…

Web3应用:DeFi是什么?有什么用?

Web3&#xff0c;也被称为第三代互联网&#xff0c;是基于区块链技术的去中心化网络。它旨在创建一个不依赖于中心化服务提供商的互联网&#xff0c;赋予用户更大的数据所有权和控制权。而DeFi&#xff0c;即去中心化金融&#xff08;Decentralized Finance&#xff09;&#x…

街道征迁项目档案管理系统

街道征迁项目档案管理系统是一个用于管理街道征迁项目档案的软件系统。该系统的主要功能包括档案录入、档案存储、档案检索、档案共享等。 系统的用户可以通过该系统录入征迁项目相关的档案信息&#xff0c;包括项目名称、征迁范围、土地面积、征迁补偿费用等。同时&#xff0c…

【设计模式】之模板方法模式

系列文章目录 【设计模式】之策略模式 【设计模式】之责任链模式 文章目录 系列文章目录 前言 一、什么是模板方法模式 定义 角色 二、为什么要使用模板方法模式 优点 缺点 三、案例 普通案例 模拟Servlet过程案例 总结 前言 今天给大家介绍23种设计模式中的模板方法模式&a…

Python基础学习之编辑器

大家好&#xff0c;今天我想和大家分享一下Python中一个非常强大且优雅的特性——装饰器&#xff08;Decorators&#xff09;。装饰器在Python中是一种高级语法&#xff0c;它允许你在不修改函数或类的情况下&#xff0c;为其添加额外的功能。这不仅让代码更加整洁&#xff0c;…

搭建Kafka源码环境并测试

文章目录 一、前言二、环境准备三、环境搭建3.1 JDK 环境搭建3.2 Scala 环境搭建3.2.1 配置 Scala 环境变量3.2.2 验证 3.3 Gradle 环境搭建3.3.1 配置 Gradle 环境变量3.3.2 验证 3.4 Zookeeper 环境搭建3.4.1 配置 Zookeeper 环境变量3.4.2 验证 3.5 Kafka 源码搭建3.5.1 导入…

CKEditor编辑器的简单使用方法,取值,赋值

先从官网下载包。CKEditor 4 - Download Latest Version. 一&#xff1a;在项目里引用JQ基础包和CK的JS包 <script src"/JS/jquery-3.4.1.js?v1.0"></script><script src"/ckeditor/ckeditor.js"></script> 二&#xff1a;在表…

Codeforces Round 942 (Div. 2) ----- A ----- F --- 题解

前情提要&#xff1a;因为数学水平原因&#xff0c;没法给出e的证明&#xff0c;因为我也是举例归类得出的结论&#xff0c;但是按理来说应该可以利用生成数函数证明 f题也是因为数学原因加上水平有限&#xff0c;我的理解可能有偏差。 目录 A. Contest Proposal&#xff1a…

CocoaPods:iOS项目依赖管理的利器

CocoaPods&#xff1a;iOS项目依赖管理的利器 一、引言 在iOS项目的开发过程中&#xff0c;我们经常需要集成各种第三方库来快速实现某些功能&#xff0c;如网络请求、UI组件、数据处理等。然而&#xff0c;手动管理这些第三方库的版本、依赖和更新是一个繁琐且容易出错的过程…

Linux内核常用调优参数

Linux内核常用调优参数 vi /etc/sysctl.conf net.core.rmem_default 256960 net.core.rmem_max 513920 net.core.wmem_default 256960 net.core.wmem_max 513920 net.core.netdev_max_backlog 2000 net.core.somaxconn 2048 net.core.optmem_max 81920 net.ipv4.tcp_m…

图像处理的一些操作(1)

图像处理 1.安装PIL&#xff0c;skimage库1.1导入skimage库中的oi模块和data模块 2.读取图像文件2.1读取图像文件2.2 以灰度模式读取图像2.3 查看示例图像的目录路径2.4 读取chelsea图片2.5 加载示例图片并保存2.6 获得加载图片的信息2.6.1 输出图片类型2.6.2 输出图片尺寸2.6.…

论文速递 | Operations Research 3月文章合集(上)

编者按 在本系列文章中&#xff0c;我们梳理了运筹学顶刊Operations Research在2024年3月份发布的18篇文章的基本信息&#xff0c;旨在帮助读者快速洞察领域新动态。本文为第一部分。 推荐文章1 ● 题目&#xff1a;Optimal Diagonal Preconditioning 最优对角预条件化 ● …

MySQL数据库练习(17)

schooldb库——utf8字符集——utf8_general_ci排序规则 81. DDL CREATE TABLE styles (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,styleSys varchar(20) DEFAULT NULL COMMENT 系统类型(home:PC),styleName varchar(255) NOT NULL COMMENT 风格名称,styleAuthor va…

企业网站必看——企业级OV SSL证书详细介绍

组织验证&#xff08;Organization Validation&#xff0c;简称OV&#xff09;SSL证书作为网络安全解决方案的重要组成部分&#xff0c;通过提供中级的安全保障和增强的网站身份验证&#xff0c;有效提升了网站的安全级别与用户信赖度。本文将深入探讨OV SSL证书的工作原理、申…

SQL常用语句与事务介绍

文章目录 基本语法常见用法实用语句事务 基本语法 SELECT&#xff1a;用于从数据库表中检索数据。 语法&#xff1a;SELECT column1, column2, ... FROM table_name;INSERT INTO&#xff1a;用于向数据库表中插入新行。 语法&#xff1a;INSERT INTO table_name (column1, col…

面试:Spring(IOC、AOP、事务失效、循环引用、SpringMVC、SpringBoot的自动配置原理、Spring框架常见注解)

目录 一、Spring的单例Bean是否是线程安全的&#xff1f; 二、什么是AOP 1、介绍 &#xff08;1&#xff09;记录操作日志 &#xff08;2&#xff09;实现Spring中的事务 三、spring中事务失效的场景有哪些&#xff1f; 1、异常捕获处理 2、抛出检查异常 3、非public方…

nginx配置tcp长连接实现集群

注意&#xff1a;实际工程应该会用docker部署。 安装nginx sudo apt install libpcre3-dev zlib1g openssl -y wget https://nginx.org/download/nginx-1.26.0.tar.gz #安装到/home/gyl/workspace/mprpc/vendor/nginx-1.26.0下 tar xfzv nginx-1.26.0.tar.gz && cd n…

MATLAB初学者入门(29)—— 傅里叶分析

傅里叶分析是一种强大的数学工具&#xff0c;用于分解信号为正弦和余弦组成部分。在MATLAB中&#xff0c;可以使用多种方法进行傅里叶分析&#xff0c;包括快速傅里叶变换&#xff08;FFT&#xff09;和功率谱密度估计等。这些方法非常适用于信号处理、振动分析、音频处理等领域…