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



























浙公网安备 33010602011771号