Mysql教程(五):DQL学习

news2024/11/25 20:26:12

Mysql教程(五):DQL学习

DQL Data Query Language 数据查询语言,用来查询数据库中表的记录

1 基本语法

DQL查询语句,语法结构如下:

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

分为以下几个部分:

  • 基本查询(不带任何条件)
  • 条件查询(WHERE)
  • 聚合函数(count、max、min、avg、sum)
  • 分组查询(group by)
  • 排序查询(order by)
  • 分页查询(limit)

2 基本查询

查询多个字段

SELECT 字段1, 字段2, 字段3... FROM 表名;
SELECT * FROM 表名;

注意:*代表查询所有字,在实际开发中尽量少用(不直观,影响效率)

字段设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;

AS也可以省略:

SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

案例

A. 查询指定字段 name,workno,age并返回

select name, worknum, age from empolyee;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVs1bEXJ-1689737094170)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719105556960.png)]

B. 查询员工的身份证号,起别名

SELECT name, idcard '身份证号' FROM empolyee;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PrhV6Hpc-1689737094171)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719105748800.png)]

C. 查询员工的年龄有哪些,不重复

SELECT DISTINCT age '年龄' FROM empolyee;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ELVu3trW-1689737094171)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719105926010.png)]

3 条件查询

语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件

常用比较运算法

比较运算法功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
BETWEEN … AND …在某个范围之内(含最小、最大值)
IN(…)在in之后的列表中的值,多选
LIKE 占位符模糊匹配(_匹配单个字符, %匹配任意个字符)
IS NULL是NULL

常用的逻辑运算符

逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或 !非, 不是

案例

查询年龄等于21的员工信息

SELECT * FROM empolyee WHERE age=21;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XoNBZSEV-1689737094172)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719110525388.png)]

查询年龄大于21的员工信息

SELECT * FROM empolyee WHERE age>21;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHMgIzSL-1689737094172)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719110552571.png)]

查询身份证号为空的员工信息

SELECT * FROM empolyee WHERE idcard IS NULL;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XRdd492C-1689737094172)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719110959208.png)]

查询身份证号不为空的员工信息

SELECT * FROM empolyee WHERE idcard IS NOT NULL;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-91EtIAcj-1689737094172)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719111042476.png)]

查询年龄不等于21的员工信息

SELECT * FROM empolyee WHERE age != 21;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ZAwHW1g-1689737094173)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719111134473.png)]

查询年龄大于等于22并且小于等于24的员工信息

SELECT * FROM empolyee WHERE age>=22 && age<=24;

SELECT * FROM empolyee WHERE age>=22 AND age<=24;

# BETWEEN后跟的是最小值,AND后跟的是最大值,切不可写反了
SELECT * FROM empolyee WHERE age BETWEEN 22 AND 24;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qOna1zHU-1689737094173)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719111257433.png)]

查询年龄为24并且性别为女的员工信息

SELECT * FROM empolyee WHERE age=24 AND gender='女';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dun3vDo6-1689737094173)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719111532428.png)]

查询年龄为24或者21员工信息

SELECT * FROM empolyee WHERE age=24 OR age=21;

SELECT * FROM empolyee WHERE age IN (21, 24);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmFw4yJB-1689737094173)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719111608847.png)]

查询姓名为两个字员工信息

SELECT * FROM empolyee WHERE name like '__';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nCJeV1ni-1689737094173)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719111815549.png)]

查询身份证号最后一位是X的员工信息

SELECT * FROM empolyee WHERE idcard LIKE '%X';

SELECT * FROM empolyee WHERE idcard LIKE '_________________X';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AabY1qWa-1689737094174)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719112039324.png)]

4 聚合函数

什么是聚合函数?

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

常见的聚合函数

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

语法

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

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

案例

A.统计员工数量

SELECT COUNT(*) FROM empolyee;

SELECT COUNT(idcard) FROM empolyee;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wY6mSGVv-1689752070614)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719153316863.png)]

B.统计员工的平均年龄

SELECT AVG(age) FROM empolyee;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mgc4q1mo-1689752070614)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719153303255.png)]

C.统计员工最大年龄

SELECT MAX(age) FROM empolyee;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAxfPFkc-1689752070614)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719153255630.png)]

D.统计员工最小年龄

SELECT MIN(age) FROM empolyee;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H9CTmqkk-1689752070614)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719153246045.png)]

E.统计男员工的年龄之和

SELECT SUM(age) FROM empolyee WHERE gender = '男';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CveZdeuh-1689752070615)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719153236042.png)]

5 分组查询

语法

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

where和having区别

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

注意:

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
  • 执行顺序: where > 聚合函数 > having
  • 支持多字段分组, 具体语法为 : group by columnA,columnB

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

SELECT gender, COUNT(*) FROM empolyee GROUP BY gender;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-79a5Rg20-1689752870980)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719154635811.png)]

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

SELECT gender, AVG(age) FROM empolyee GROUP BY gender;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6a1AH9qN-1689752870980)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719154628571.png)]

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

SELECT workaddress, count(*) address_count
FROM empolyee
WHERE age < 45
GROUP BY workaddress
HAVING address_count >= 2;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xeQtPjgv-1689752870980)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719154621138.png)]

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

SELECT workaddress, gender, count(*) '数量'
FROM empolyee
GROUP BY gender , workaddress;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4QEKn9qk-1689752870980)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719154611960.png)]

6 排序查询

语法

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

排序方式

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

注意:

如果是升序,可以不指定排序方式ASC

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

案例:

A.根据年龄对员工进行升序排序

SELECT * FROM empolyee ORDER BY age ASC;

SELECT * FROM empolyee ORDER BY age;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aoV3w0xl-1689753482314)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719155457723.png)]

B. 根据入职时间对员工进行降序排序

SELECT * FROM empolyee ORDER BY entrydate DESC;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nHn45H0r-1689753482314)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719155601265.png)]

C. 根据年龄对员工进行升序排序,如果年龄相同,按照入职时间进行降序排序

SELECT * FROM empolyee ORDER BY age ASC , entrydate DESC;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbPklQzS-1689753482315)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719155710736.png)]

7 分页查询

语法

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

注意事项:

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

案例

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

SELECT * FROM empolyee LIMIT 0, 5;

SELECT * FROM empolyee LIMIT 5;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Otz8HjdH-1689753848341)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719160302119.png)]

B. 查询第2页员工数据,每页展示10条记录 ------> (页码-1)*页 展示记录数

SELECT * FROM empolyee LIMIT 5, 5;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRrWDktE-1689753848342)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719160355413.png)]

8 案例

查询年龄为20, 21, 22,23的女员工

SELECT * FROM empolyee 
WHERE gender='女' 
AND age in (20,21,22,23);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWzMVFje-1689754717639)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719160611781.png)]

查询性别为 男,并且年龄在22-23之间的姓名为2个字的员工

SELECT * FROM empolyee 
		WHERE gender='男' 
		AND age 
		BETWEEN 22 AND 23 
		AND name LIKE '__';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2pqKwdyQ-1689754717639)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719160655552.png)]

查询员工年龄小于60的,男性员工和女性员工的人数

SELECT gender, COUNT(*) FROM empolyee 
						WHERE age < 60 
						GROUP BY gender;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hnslKXqM-1689754717640)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719161119264.png)]

查询年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按照入职时间降序排序

SELECT name, age FROM empolyee 
                 WHERE age <= 35 
                 ORDER BY age ASC, entrydate DESC;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0bDeHciB-1689754717640)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719161457772.png)]

查询性别为男,年龄在20-40之间以内的5个员工信息,对结果按照年龄升序排序,年龄相同按照入职时间升序排序

SELECT * FROM empolyee 
         WHERE gender='男' AND 
               age BETWEEN 20 AND 40 
         ORDER BY age ASC, entrydate DESC LIMIT 5;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LjrbrLAE-1689754717640)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230719161757900.png)]

9 执行顺序

在这里插入图片描述

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

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

相关文章

工时管理为何对项目如此重要?8Manage 带你读懂!

“时间就是金钱”&#xff0c;相信作为管理者都已经听腻了这话&#xff0c;但在项目管理中确实是真理。你要知道项目工时是会直接影响到项目费用成本的&#xff0c;不论项目工作是按小时还是按固定费用计费和付款&#xff0c;在一段工时内完成的工作越多&#xff0c;说明效率就…

myAgv的slam算法学习以及动态避障下篇

引言 在之前的一篇文章中有提到购入了一台myAGV&#xff0c;以树莓派4B为控制核心的移动机器人。上篇文章中向大家介绍了myAGV如何实现建图、导航以及静态避障&#xff0c;但我们深知&#xff0c;这只是机器人自主导航能力的基础。在实际应用场景中&#xff0c;机器人需要面对复…

【个人笔记】linux命令之ls

目录 Linux中一切皆文件ls命令常用参数常用命令lscpu lspci Linux中一切皆文件 理解参考&#xff1a;为什么说&#xff1a;Linux中一切皆文件&#xff1f; ls命令 ls&#xff08;英文全拼&#xff1a; list directory contents&#xff09;命令用于显示指定工作目录下之内容…

宝塔 30分钟部署免费在线客服系统

客服系统发布以来&#xff0c;一直有朋友询问如何在宝塔面板中安装部署&#xff0c;开始我一直认为参考 Linux 版的安装教程就可以了&#xff0c;一直没有专门写宝塔环境的教程。这段时间来咨询的朋友越来越多&#xff0c;经过了解&#xff0c;我才知道宝塔面板的普及率有多高&…

什么是Spring Actuator?它有什么优势?

目录 一、什么是Spring Actuator 二、Spring Actuator的应用场景 三、Spring Actuator的优势 一、什么是Spring Actuator Spring Actuator是Spring Boot提供的一个功能强大的管理和监控工具&#xff0c;用于监控和管理Spring Boot应用程序。它可以提供对应用程序的运行时信…

java实现身份证号码校验

二代身份证为18位&#xff0c;前六位为籍贯信息&#xff0c;7至14位为生日&#xff0c;最后一位校验前17位号码是否正确 校验规则为&#xff1a;前17位每一位乘以一个固定权重并相加然后除以11得到的余数&#xff0c;判断余数是否和校验的数相等 代码实现&#xff08;支持15位…

leetcode 9 回文数

class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int num x;int value 0;while(num > 0){value value * 10 num % 10;num num / 10;}return value x;} }

Enterprise:通过 App search 摄入数据

App Search 是 Elastic Enterprise Search 的一部分&#xff0c;Elastic Enterprise Search 是由 Elasticsearch 提供支持的内容搜索工具集合。 最初由 App Search 引入的一些功能&#xff08;例如网络爬虫&#xff09;现在可以直接通过企业搜索使用。 将这些功能与其他企业搜…

如何用DeepDiff测接口数据源变更?

开发同学最近变更了部分业务查询接口底层的数据源&#xff0c;希望测试同学能够针对这些接口进行一些回归验证&#xff0c;校验底层数据源更新前后业务查询接口返回的一致性&#xff0c;保证更新后对正常业务没有影响。 这个回归测试和一般接口测试有所区别&#xff0c;不仅仅…

混合背包(01+完全+多重背包大杂烩)

因为我们知道求解多重背包时&#xff0c;是将其进行二进制优化为01背包问题&#xff0c;那么我们就将01背包和多重背包看成一种情况&#xff0c;然后只要处理&#xff0c;完全背包和01背包问题即可&#xff08;详细看下方代码&#xff09; #include<bits/stdc.h> using n…

leetcode 965.单值二叉树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;单值二叉树 思路&#xff1a; 让当前的根节点与左孩子节点与右孩子节点判断&#xff0c;若相等则继续向下分治&#xff0c;让左孩子与右孩子当作新的根节点继续判断&#xff0c;直到某个节点不相等。 1️⃣ 代码&#x…

JUC常用4大并发工具类详解

什么是 JUC JUC 就是 java.util.concurrent 包,这个包俗称 JUC,里面都是解决并发问题的一些东西,该包的位置位于 java 下面的 rt.jar 包下面。 JUC 中 4 大常用并发工具类 CountDownLatch CyclicBarrier Semaphore ExChanger CountDownLatch CountDownLatch,俗称闭锁,作用…

关于 PostgreSQL 删除数据库 - 命令行删除,报错数据库不存在,pgadmin 报错存在会话链接 导致无法删除数据库问题

序言 测试环境&#xff1a; Windows 10问题 笔者尝试过在 cmd 命令行&#xff0c;使用PostgreSQL 的 psql 工具登录 postgresql&#xff0c;删除某个有问题的数据库&#xff0c;准备新建重载该数据库时&#xff0c;发现 DROP DATABASE database_name &#xff0c;竟然报错该…

esp32-cam红外实时监控报警系统(巴发云和邮箱同时推送)

esp32-cam红外实时监控报警系统 设想-巴发云转折-照片数量限制代码避开巴发云照片限制邮箱的坑同时我的巴发云微信也受到了提醒报警&#xff0c;虽然没有图片显示。 设想-巴发云 我想做一个人体红外传感器发现人体报警&#xff0c;同时给我手机发报警提醒&#xff0c;同时发送…

《数据结构》数据结构概念,顺序表,链表

目录 1. 为什么学习数据结构&#xff1f; 2. 数据结构 2.1. 数据 2.2. 逻辑结构 2.3. 存储结构 2.4. 操作 3. 算法 3.1. 算法与程序 3.2. 算法与数据结构 3.3. 算法的特性 3.4. 如何评价一个算法的好坏 4. 线性表 4.1. 顺序表 4.2. 单向链表 4.3. 单向循环链表&…

使用NVIDIA FX Composer验证多纹理合成效果

最近项目上有一个需求&#xff0c;需要将4张带透明通道纹理合成为一张&#xff0c;并且每张纹理指定一个全局透明度。由于纹理过多&#xff0c;合成效果无法保证&#xff0c;为了减少项目的风险&#xff0c;领导希望我先快速验证一下我们讨论的方法是否能完成项目的要求。因此我…

GO语言泛型

set一般没什么不方便的 但是使用GET 需要使用类型断言,将取出来的数据转为预期数据, 空接口本身是一个装箱,会产生内存逃逸和多一部分空间. 于是1.17GO使用泛型. 泛型实现: 分析可执行文件后:发现 也就是泛型会为每个数据类型都生产一套代码,导致可执行文件大小增加,并且使用…

在企业使用jmeter开展实际的接口自动化测试工具

在企业使用jmeter开展实际的接口自动化测试工具&#xff0c;建议按如下操作流程&#xff0c; 可以使整个接口测试过程更规范&#xff0c;更有效。 接口自动化的流程&#xff1a; 1、获取到接口文档&#xff1a;swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

关于AES 和 BASE64 的理解

BASE64 首先 base64 是一种编码方式&#xff0c;它的字符集由64个不同字符组成&#xff08;A-Z、a-z、0-9和两个额外字符/&#xff09;&#xff0c;因此每个Base64字符都占用6个比特&#xff08;2^6 64&#xff09; Base64编码后的数据长度 4 * ceil(原始数据长度 / 3) 其中…

echarts 横向柱状图 刻度标签

echarts 横向柱状图 刻度标签 怎么调试都不左对齐 将width去掉固定宽度 echarts会自适应