系列五、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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

持续集成交付CICD:GitLabCI操作Harbor仓库

目录 一、实验 1.GitLabCI操作Harbor仓库 二、问题 1.gitlab-runner连接docker daemon报错 一、实验 1.GitLabCI操作Harbor仓库 &#xff08;1&#xff09;修改GitLabCI共享库代码并提交到mater CI.yaml .pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: …

设计原则 | 接口隔离原则

一、接口隔离原则 1、原理 客户端不应该依赖它不需要的接口&#xff0c;即一个类对另一个类的依赖应该建立在最小的接口上。如果强迫客户端依赖于那些它们不使用的接口&#xff0c;那么客户端就面临着这个未使用的接口的改变所带来的变更&#xff0c;这无意间导致了客户程序之…

【AI】如何准备mac开发vue项目的环境

为了在Mac上开发Vue项目&#xff0c;你需要准备一些工具和环境。以下是主要的步骤&#xff1a; 安装Node.js和npm&#xff1a; Vue.js是一个基于JavaScript的框架&#xff0c;因此你需要Node.js环境。访问Node.js官网下载并安装Node.js&#xff0c;这也会自动安装npm&#xff0…

深圳锐科达IP网络广播系统

深圳锐科达IP网络广播系统 网络音频广播系统是一种基于TCP/IP网络的纯数字音频广播系统。该网络音频广播系统在物理结构上与标准IP网络完全集成。它不仅真正实现了基于TCP/IP网络的数字音频的广播、直播和点播&#xff0c;而且利用TCP/IP网络的优势&#xff0c;突破了传统模拟广…

Vue 组件传参 emit

emit 属性&#xff1a;用于创建自定义事件&#xff0c;接收子组件传递过来的数据。 注意&#xff1a;如果自定义事件的名称&#xff0c;和原生事件的名称一样&#xff0c;那么只会触发自定义事件。 setup 语法糖写法请见&#xff1a;《Vue3 子传父 组件传参 defineEmits》 语…

俄罗斯军方计划用 Astra Linux 取代 Windows!

网络安全正在改变全球化的面貌&#xff0c;各国政府为了防范外国的间谍和破坏活动&#xff0c;正积极发展自己的技术。在这一趋势下&#xff0c;俄罗斯军方已经开始用 Linux 发行版 Astra Linux 替换 Windows 系统。 如何提高Linux系统安全性&#xff1f;提升Linux安全的关键策…

保障线程安全性:构建可靠的多线程应用

目录 引言 为什么线程安全性如此重要&#xff1f; 1. 竞态条件&#xff08;Race Conditions&#xff09; 2. 死锁&#xff08;Deadlocks&#xff09; 3. 数据竞争&#xff08;Data Races&#xff09; 4. 内存可见性&#xff08;Memory Visibility&#xff09; 面临的挑战…

【玩转TableAgent数据智能分析】利用TableAgent进行教育数据分析

文章目录 前言九章云极&#xff08;DataCanvas&#xff09;介绍前期准备样例数据集体验1. 样例数据集-Airbnb民宿价格&评价 体验1.1 体验一1.2 体验二 教育数据的分析&#xff08;TableAgent&ChatGLM对比&#xff09;1. 上传文件2. 数据分析与对比2.1 分析一2.1.1 Tabl…

Spring上下文之注解模块ConfigurationMethod

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

转载: iOS 优雅的处理网络数据

转载&#xff1a; iOS 优雅的处理网络数据 原文链接&#xff1a;https://juejin.cn/post/6952682593372340237 相信大家平时在用 App 的时候, 往往有过这样的体验&#xff0c;那就是加载网络数据等待的时间过于漫长&#xff0c;滚动浏览时伴随着卡顿&#xff0c;甚至在没有网…

十五 动手学深度学习v2计算机视觉 ——全连接神经网络FCN

文章目录 FCN FCN 全卷积网络先使用卷积神经网络抽取图像特征&#xff0c;然后通过卷积层将通道数变换为类别个数&#xff0c;最后通过转置卷积层将特征图的高和宽变换为输入图像的尺寸。 因此&#xff0c;模型输出与输入图像的高和宽相同&#xff0c;且最终输出通道包含了该空…

【MySQL学习之基础篇】函数

文章目录 前言1. 字符串函数2. 数值函数3. 日期函数4. 流程函数 前言 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着&#xff0c;这一段程序或代码在MySQL中已经给我们提供了&#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即…

当 Sealos 遇上区块链

当 Sealos 遇上区块链 拿着区块链技术不一定是去发币&#xff0c;很多业务系统也适合用这些技术&#xff0c;比如做个统一支付系统&#xff0c;积分系统等&#xff0c;可以做为一家公司的金融基础设施&#xff0c;或支付中台。拿链的技术去做有很多好处&#xff1a; 高可用&a…

最新盲盒交友脱单系统源码

盲盒交友脱单系统源码&#xff0c;学校 爱好 城市 地区 星座等等&#xff0c;首页轮转广告&#xff0c;页面美化&#xff0c;首页两款连抽高质量底部连抽&#xff0c;后台选择开关&#xff0c;邀请奖励爱心或者&#xff0c;提现达到金额有提成奖励&#xff0c;二级分销&#xf…

【Linux】dump命令使用

dump命令 dump命令用于备份文件系统。使用dump命令可以检查ext2/3/4文件系统上的文件&#xff0c;并确定哪些文件需要备份。这些文件复制到指定的磁盘、磁带或其他存储介质保管。 语法 dump [选项] [目录|文件系统] bash: dump: 未找到命令... 安装dump yum -y install …

无参数RCE知识点

什么是无参数RCE&#xff1f; 无参rce&#xff0c;就是说在无法传入参数的情况下&#xff0c;仅仅依靠传入没有参数的函数套娃就可以达到命令执行的效果 核心代码 if(; preg_replace(/[^\W]\((?R)?\)/, , $_GET[code])) { eval($_GET[code]); } 这段代码的核心就是只…

luceda ipkiss教程 49:以pcell的方式定义线路

在ipkiss中&#xff0c;通常以i3.Circuit来设计线路&#xff08;见教程2&#xff09;&#xff0c;以i3.Pcell的框架也可以来设计线路&#xff1a; 以SplitterTree为例&#xff1a; 线路仿真结果&#xff1a; 所有代码如下&#xff1a; from si_fab import all as pdk import…

CIDR(无类域间路由)与VLSM(可变长度子网掩码)的区别

CIDR和VLSM的介绍 CIDR CIDR&#xff08;Classless Inter-Domain Routing&#xff0c;无类域间路由&#xff09;是一种用于对互联网协议&#xff08;IP&#xff09;地址进行聚合和分配的标准。CIDR的引入旨在解决IPv4地址空间的不足和低效分配的问题。在传统的IP地址规划中&a…

《Java已死、前端已凉》:真相与焦虑的辩证

文章目录 Java 企业级支柱Java 在企业级应用中的地位后端开发的支柱Java生态系统的强大 前端&#xff1a;蓬勃发展的创新引擎新技术的涌现用户体验的重要性 Java的演进与创新云原生时代的 Java开发效率和生态系统 前端技术的未来走向WebAssembly 的崛起可访问性和国际化的重要性…

FPGA巩固基础:秒表的设计

设计要求&#xff1a; 6位8段数码管&#xff0c;低三位显示毫秒计数&#xff0c;最高位显示分钟&#xff0c;其余两位显示秒计数。 开始案件与暂停按键&#xff0c;复位按键直接全部归零。 扩展部分&#xff1a;每计满一次&#xff0c;led移位一次。 框图设计&#xff1a; …