当前位置: 首页 > news >正文

系列五、DQL

一、DQL

1.1、概述

        DQL的英文全称为:Data Query Language,中文意思为:数据查询语言,用大白话讲就是查询数据。对于大多数系统来说,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作,所以为了提高我们业务系统的响应速度,还是很有必要熟练掌握DQL语言的。

1.2、查询的基本语法

SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMIT分页参数

1.3、条件查询

1.3.1、常见的比较运算符

1.3.2、常见的逻辑运算符

1.4、聚合函数

1.4.1、概述

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

1.4.2、常见的聚合函数

1.4.3、语法

SELECT 聚合函数(字段列表) FROM 表名 ;
注意 : NULL值是不参与所有聚合函数运算的。

1.5、数据初始化

use vhr;drop table if exists employee;DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee`  (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',`work_no` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工号',`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',`gender` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别',`age` int NULL DEFAULT NULL COMMENT '年龄',`id_card` char(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '身份证号',`work_address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工作地址',`entry_date` date DEFAULT NULL COMMENT '入职日期',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = DYNAMIC;INSERT INTO `employee`(`work_no`, `name`, `gender`, `age`, `id_card`, `work_address`, `entry_date`) 
VALUES 
('00001', '柳岩666', '女', 20, '123456789012345678', '北京', '2000-01-01'),
('00002', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01'),
('00003', '韦一笑', '男', 38, '123456789712345670', '上海', '2005-08-01'),
('00004', '赵敏', '女', 18, '123456757123845670', '北京', '2009-12-01'),
('00005', '小昭', '女', 16, '123456769012345678', '上海', '2007-07-01'),
('00006', '杨逍', '男', 28, '12345678931234567X', '北京', '2006-01-01'),
('00007', '范瑶', '男', 40, '123456789212345670', '北京', '2005-05-01'),
('00008', '黛绮丝', '女', 38, '123456157123645670', '天津', '2015-05-01'),
('00009', '范凉凉', '女', 45, '123156789012345678', '北京', '2010-04-01'),
('00010', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01'),
('00011', '张士诚', '男', 55, '123567897123465670', '江苏', '2015-05-01'),
('00012', '常遇春', '男', 32, '123446757152345670', '北京', '2004-02-01'),
('00013', '张三丰', '男', 88, '123656789012345678', '江苏', '2020-11-01'),
('00014', '灭绝', '女', 65, '123456719012345670', '西安', '2019-05-01'),
('00015', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04-01'),
('00016', '周芷若', '女', 18, null, '北京', '2012-06-01')

1.6、统计函数案例

1.6.1、统计employee表中员工的数量

select count(*) from `employee`;    -- 结果16
select count(1) from `employee`;    -- 结果16
select count(id) from `employee`;    -- 结果16
select count(`id_card`) from `employee`;    -- 结果15

题外话:count(*) VS count(1) VS count(id) VS count(`id_card`)?

1.6.2、统计employee表中员工的平均年龄

select avg(age) from employee; 

1.6.3、统计employee表中员工的最大 & 最小年龄 

select max(age) from employee;
select min(age) from employee;

1.6.4、统计employee表中西安员工的年龄之和

select sum(age) from employee where work_address = '西安';

1.7、 分组函数案例

1.7.1、语法

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

1.7.2、where与having的区别

(1)执行时机不同: where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组 之后对结果进行过滤。
(2)判断条件不同: where 不能对聚合函数进行判断,而 having 可以。
        
注意事项:
        • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
        • 执行顺序: where > 聚合函数 > having 。
        • 支持多字段分组 , 具体语法为 : group by columnA,columnB

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

select gender, count(*) from employee group by gender ;

1.7.4、 根据性别分组 , 统计男性员工和女性员工的平均年龄

select gender,avg(age) from employee group by gender;

1.7.5、查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址

select work_address,count(*) as 'empNumber' from employee where age < 45 group by work_address HAVING empNumber >= 3;

1.7.6、统计各个工作地址上班的男性及女性员工的数量

select work_address,gender, count(*) from employee group by work_address,gender;

1.8、排序查询

语法:select <column1,column2,column3,...> from <tableName> order by <column1> desc;

asc(默认):升序

desc:降序

说明:比较简单,不再演示。

1.9、分页查询案例

1.9.1、语法 

语法:SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询记录数 ;
注意事项 :
        • 起始索引从 0 开始,起始索引 = (查询页码 - 1 ) * 每页显示记录数。
        • 分页查询是数据库的方言,不同的数据库有不同的实现, MySQL 中是 LIMIT 。
        • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10 。

1.9.2、 查询employee表中第一页的数据,每页展示10条

select * from employee limit 10;

1.9.3、查询employee表中第二页的数据,每页展示10条 

select * from employee limit 10,10;

相关文章:

系列五、DQL

一、DQL 1.1、概述 DQL的英文全称为&#xff1a;Data Query Language&#xff0c;中文意思为&#xff1a;数据查询语言&#xff0c;用大白话讲就是查询数据。对于大多数系统来说&#xff0c;查询操作的频次是要远高于增删改的&#xff0c;当我们去访问企业官网、电商网站&…...

【智能家居】七、人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

一、翔云 人工智能开放平台 API文档开发示例下载 二、编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget)libcurl库重新配置&#xff0c;编译&#xff0c;安装运行&#xff08;运行需添加动态库为环境变量&#xff09; 三、编程实现人脸识别 四、Base6…...

基于node 安装express后端脚手架

1.首先创建文件件 2.在文件夹内打开终端 npm init 3.安装express: npm install -g express-generator注意的地方&#xff1a;这个时候安装特别慢,最后导致不成功 解决方法&#xff1a;npm config set registry http://registry.npm.taobao.org/ 4.依次执行 npm install -g ex…...

Mrdoc知识文档

MrDoc知识文档平台是一款基于Python开发的在线文档系统&#xff0c;适合作为个人和中小型团队的私有云文档、云笔记和知识管理工具&#xff0c;致力于成为优秀的私有化在线文档部署方案。我现在主要把markdown笔记放在上面&#xff0c;因为平时老是需要查询一些知识点&#xff…...

C语言中getchar函数

在 C 语言中&#xff0c;getchar() 是一个标准库函数&#xff0c;用于从标准输入&#xff08;通常是键盘&#xff09;读取单个字符。它的函数原型如下&#xff1a; int getchar(void);getchar() 函数的工作原理如下&#xff1a; 当调用 getchar() 函数时&#xff0c;它会等待…...

全栈开发组合

SpringBoot是什么&#xff1f; SpringBoot是一个基于Spring框架的开源框架&#xff0c;由Pivotal团队开发。它的设计目的是用来简化Spring应用的初始搭建以及开发过程。SpringBoot提供了丰富的Spring模块化支持&#xff0c;可以帮助开发者更轻松快捷地构建出企业级应用 Sprin…...

wpf TelerikUI使用DragDropManager

首先&#xff0c;我先创建事务对象ApplicationInfo&#xff0c;当暴露出一对属性当例子集合对于构成ListBoxes。这个类在例子中显示如下代码&#xff1a; public class ApplicationInfo { public Double Price { get; set; } public String IconPath { get; set; } public …...

Python+Appium自动化测试之元素等待方法与重新封装元素定位方法

在appium自动化测试脚本运行的过程中&#xff0c;因为网络不稳定、测试机或模拟器卡顿等原因&#xff0c;有时候会出现页面元素加载超时元素定位失败的情况&#xff0c;但实际这又不是bug&#xff0c;只是元素加载较慢&#xff0c;这个时候我们就会使用元素等待的方法来避免这种…...

详解Maven如何打包SpringBoot工程

目录 一、spring-boot-maven-plugin详解 1、添加spring-boot-maven-plugin插件到pom.xml 2、配置主类&#xff08;Main Class&#xff09; 3、配置打包的JAR文件名 4、包含或排除特定的资源文件 5、指定额外的依赖项 6、配置运行参数 7、自定义插件执行阶段 二、Maven打…...

PyQt6 QFrame分割线控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计46条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…...

PostgreSql 序列

一、概述 在 PostgreSQL 中&#xff0c;序列用于生成唯一标识符&#xff0c;通常用于为表的主键列生成连续的唯一值。若目的仅是为表字段设置自增 id&#xff0c;可考虑序列类型来实现&#xff0c;可参考《PostgreSql 设置自增字段》 二、创建序列 2.1 语法 CREATE [ TEMPOR…...

【深度学习目标检测】六、基于深度学习的路标识别(python,目标检测,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…...

Vue3上传图片和删除图片

<div class"illness-img"><van-uploader:after-read"onAfterRead"delete"onDeleteImg"v-model"fileList"max-count"9":max-size"5 * 1024 * 1024"upload-icon"photo-o"upload-text"上传图…...

华为配置VRRP负载分担示例

组网需求 如图1所示&#xff0c;HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力&#xff0c;HostA以SwitchA为默认网关接入Internet&#xff0c;SwitchB作为备份网关&#xff1b;HostC以SwitchB为默认网关接入Internet&#xff0c;Switc…...

【Python】按升序排列 Excel 工作表

发现按名称对 Excel 工作表进行排序很麻烦&#xff0c;因此创建了一个代码来使用 Python 的 openpyxl 对它们进行排序。 1. 本次创建的代码概述 在GUI中指定一个Excel文件&#xff08;使用Tkinter。这是一个标准模块&#xff0c;因此不需要安装&#xff09;加载Excel文件&…...

定时器TIM HAL库+cubeMX(上)

定时器时钟源APB1 36MHz 一.基本定时器 1.基本框图 2.溢出时间计算 3.配置定时器步骤 TIM_HandleTypeDef g_timx_handle;/* 定时器中断初始化函数 */ void btim_timx_int_init(uint16_t arr, uint16_t psc) {g_timx_handle.Instance TIM6;g_timx_handle.Init.Prescaler p…...

我常用的几个经典Python模块

Python常用的模块非常多&#xff0c;主要分为内置模块和第三方模块两大类&#xff0c;且不同模块应用场景不同又可以分为文本类、数据结构类、数学运算类、文件系统类、爬虫类、网络通讯类等多个类型。 大家常用的内置模块比如&#xff1a;math、re、datetime、urllib、os、ra…...

课堂练习4.4:页式虚存

4-7 课堂练习4.4&#xff1a;页式虚存 缺页异常在 Linux 内核处理中占有非常重要的位置&#xff0c;很多 Linux 特性&#xff0c;如写时复制&#xff0c;页框延迟分配&#xff0c;内存回收中的磁盘和内存交换&#xff0c;都需要借助缺页异常来进行。 本实训分析 Linux 0.11 的…...

javascript实现Stack(栈)数据结构

上一篇文章我们理解了List这种数据结构&#xff0c;知道了它的特点和一些使用场景&#xff0c;这篇文章我们就来看一下栈这种数据结构&#xff0c;这里的栈可不是客栈哦&#xff0c;哈哈 栈其实和List非常像&#xff0c;使用javascript实现都是基于数组来实现 尝试理解Stack …...

Layui深入

1、代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>注册页面</title> <style> .container { max-width: 600px; margin: 0 auto; padding: 20px; …...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...