day02 MYSQL的查询操作详解
文章目录
本节内容所用的测试表
有需要的,可以点击这里下载,test.sql
主要包含ename名字,job职务,hiredate入职时间,sal薪资等字段
基础查询
查询某个字段
SELECT 字段名 FROM 表名;
- 在emp表中查询ename字段数据
- 查询多个表中的字段内容:ename job mgr信息
查询全部字段
SELECT * FROM 表名;
查询全部字段信息:
修改名称
SELECT 字段名 AS '修改后的名字' FROM emp;
利用AS 加上一个新的名字来实现改名
AS可以省略,直接在后面指定新的名字,注意一定别忘了 ’ ’ 号
数学运算
SELECT 字段(进行算数运算) FROM emp;
- 薪资实现乘法
- 薪资实现除法(除以10)
小结
- 显示表中的工人名字,薪资,职务,并且改名:
条件查询
使用WHERE进行条件的查询
可以用作条件的运算符:
关系运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
逻辑运算符 | 功能 |
---|---|
AND 或 && | 并且(多个条件同时成立) |
OR 或 || | 或者(多个条件任意成立一个) |
NOT 或 ! | 非,不是 |
其他 | 功能 |
---|---|
BETWEEN…AND… | 在某个范围之间(含最小、最大值) |
IN(…) | 在in之后的列表中的值,多选一 |
LIKE | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
IS [NOT] NULL | 是 NULL |
注意其他中的运算符。
关系及逻辑运算符
SELECT * FROM 表名 WHERE 字段名 关系 数值
- 查询所有sal薪资小于2000的数据信息
- 逻辑运算 && 实现 job名称为指定名称并且sal小于2000,此处也可以使用 AND,
其他运算符
- BETWEEN AND实现在指定范围查找sal 在1500 到 2000的范围内的合适的数据
- IN获取括号之后的特定的值 :800 和1500
- LIKE进行模糊搜索:用四个_ 实现查询四个字的名称
小结
查询所有名称的最后一个字母为S的人的姓名和薪资
使用%进行指定字母的查询;LIKE模糊查询
聚合查询
统计函数
函数名 | 作用 |
---|---|
MAX(column) | 返回某列的最低值(没有则返回NULL) |
MIN(column) | 返回某列的最高值(没有则返回NULL) |
COUNT(column) | 返回某列的行数(不包括 NULL 值) |
COUNT(*) | 返回被选列行数(包括NULL) |
SUM(column) | 求和 |
AVG(column) | 求平均值 |
统计数量
SELECT COUNT(查询名) FROM emp
- 统计整个表的行数:
- 统计特定信息的行数:具有sal的行数
计算函数
- MAX函数:输出最大的sal的信息
- MIN函数:与MAX函数相似
- SUM函数求和:输出sal之和
- AVG函数:求平均值
小结
计算所有job等于SALESMAN的员工的薪资之和,并改名
分组查询
SELECT 字段名 FROM 表名 GROUP BY 分组字段 (可选:)HAVING[分组后条件]
GROUP BY
- 查询职务,职务只出现一次(会有重复的情况,GROUP BY将其分组为只出现一次)
- 统计每个岗位的人数
- 分别统计每个岗位的最小最大工资
- 显示不同职务薪资小于1500的人数 并且此人数要大于2
注意事项
- 如果没有group by语句,则SELECT中只允许出现统计函数,不能出现其他字段:
出错:SELECT ename,MAX(sal) FROM emp; --> 出现了ename
- 如果有group by语句,则SELECT中只允许出现GROUP BY中出现的字段
出错:SELECT sal FROM emp GROUP BY job; —>sal不对应job
小结
显示非销售人员(salesman)工作名称以及从事同一工作的员工的月工资的总和,并且要满足从事同一工作的员工的月工资合计大于5000。
- 首先统计职务不为销售:
- 统计职务不为销售的各个职位的员工的工资之和,并且显示工资大于5000
排序查询
语法
SELECT 字段名 FROM 表名 ... ORDER BY 排序字段名 [ASC|DESC],[排序字段名 [ASC|DESC]];
语法说明:
- 排序字段名:表示需要排序的字段名称,多个字段时用逗号隔开。
- ASC|DESC:
ASC
表示字段按升序排序;DESC
表示字段按降序排序。其中ASC
为默认值。
特点
-
ORDER BY子句一般放到查询语句的最后面,LIMIT字句除外。
-
当排序的字段中存在空值时,ORDER BY 会将该空值作为最小值来对待。
-
ORDER BY 指定多个字段进行排序时,MySQL 会按照字段的顺序从左到右依次进行排序。
-
注意:在对多个字段进行排序时,排序的第一个字段必须有相同的值,才会对第二个字段进行排序。如果第一个字段数据中所有的值都是唯一的,MySQL 将不再对第二个字段进行排序。
示例
- 根据姓名对员工进行排序(升序)
- 查询入职时间大于1981年6月6日的员工信息,并按照入职时间升序排列
- 根据工作职位,进行升序排列,职位相同的情况下,再根据入职时间降序排列
小结
按工作职位进行分组,查看每个工作职位的人数,工作职位按升序排列
分页查询
语法
SELECT 字段名 FROM 表名 LIMIT 起始索引,查询记录数;
特点
- 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数;
- 如果查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 10。
示例
- 查询第一页员工数据,每页展示10条记录
- 查询第二页: (2-1)*10:公式
- 查询工资大于1500的员工数据,按工资升序排列,并分页,每页展示5条数据:第二页则LIMIT 5,5.
本节完整测试代码
本文来自博客园,作者:hugeYlh,转载请注明原文链接:https://www.cnblogs.com/helloylh/p/17209729.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)