【MySQL】第八节—表的增删改查,吃透这篇就够了(下)

【MySQL】第八节—表的增删改查,吃透这篇就够了(下)

Hi,我是云边有个稻草人-ZEEKLOG博客个人主页,今天结束表的增删改查,继续!

《MySQL》本篇文章所属专栏—持续更新中!
 

目录

三、Update

3.1【将孙悟空同学的数学成绩变更为 80 分】

3.2【将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分】

3.3【将总成绩倒数前三的 3 位同学的数学成绩加上 30 分】

3.4【将所有同学的语文成绩更新为原来的 2 倍】

四、Delete

4.1 删除数据

【删除孙悟空同学的考试成绩】

【删除总分倒数第一的同学信息】

【删除整张表数据】

4.2 截断表

五、去重数据表,插入查询结果

六、聚合函数

6.1 【统计班级共有多少同学】

6.2 【统计本次考试的数学成绩分数个数】

6.3【统计数学成绩总分】

6.4【统计平均总分】

6.5【返回英语最高分】

6.6【返回 > 70 分以上的数学最低分】

七、group by子句的使用

7.1【如何显示每个部门的平均工资和最高工资】

7.2【显示每个部门的每种岗位的平均工资和最低工资】

7.3 【显示平均工资低于2000的部门和它的平均工资】

7.4【having 和 where】

八、实战OJ


上节回顾:【MySQL】第七节—表的增删改查,吃透这篇就够了(上)

正文开始——

三、Update

语法:

UPDATE table_name SET column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...] 

对查询到的结果进行列值更新

案例:

3.1【将孙悟空同学的数学成绩变更为 80 分】
  • -- 更新值为具体值
3.2【将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分】
  • -- 一次更新多个列
3.3【将总成绩倒数前三的 3 位同学的数学成绩加上 30 分】
  • - 更新值为原值基础上变更
3.4【将所有同学的语文成绩更新为原来的 2 倍】

注意:更新全表的语句慎用!

  • -- 没有 WHERE 子句,则更新全表

四、Delete

4.1 删除数据

语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...] 

案例:

【删除孙悟空同学的考试成绩】
【删除总分倒数第一的同学信息】
【删除整张表数据】

注意:删除整表操作要慎用!

MySQL当中的表分为表和表里面的数据,delete删除的是表里面的数据,表的结构不受影响。

清空表的第一种做法:

4.2 截断表

对于删除整表里面的数据这个操作,在效果上和delete是一样的,但是在原理和细节上有差异

语法:

TRUNCATE [TABLE] table_name 

注意:这个操作慎用

  1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
  2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚
  3. 会重置 AUTO_INCREMENT 项

【补充】


五、去重数据表,插入查询结果

语法:

支持将 select 的结果直接 insert 插入表里面

INSERT INTO table_name [(column [, column ...])] SELECT ... 

案例:删除表中的的重复记录,重复的数据只能有一份


六、聚合函数

案例:

6.1 【统计班级共有多少同学】
  • -- 使用 * 做统计,不受 NULL 影响

也可以进行重命名操作:

  • -- 使用表达式做统计
6.2 【统计本次考试的数学成绩分数个数】
  • -- COUNT(math) 统计的是全部成绩
  • -- COUNT(DISTINCT math) 统计的是去重成绩数量

count 肯定是对筛选后的结果进行聚合统计,所以我们应该先去重操作,再进行聚合统计,so

6.3【统计数学成绩总分】
  • -- 去重之后的数学成绩的总分
  • -- 不及格 < 60 的总分,没有结果,返回 NULL
  • --数学成绩的平均分
6.4【统计平均总分】

6.5【返回英语最高分】

不能直接找到英语最高分是谁,但是可以用order by结合limit实现

6.6【返回 > 70 分以上的数学最低分】

聚合是有条件的,一定要保证列信息是可被聚合的,一个只属于某一个人的属性是无法与聚合信息相结合的,就比如上面的例子中,最高分和最高分是谁是无法相结合的。

聚合函数在应用层上,更多的是在进行数据统计,接下来学习group by进一步认识聚合函数的应用


七、group by子句的使用

在select中使用group by 子句可以对指定列进行分组查询

select column1, column2, .. from table group by column; 

案例:

  • 准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表)
    • EMP员工表
    • DEPT部门表
    • SALGRADE工资等级表

案例代码,准备工作,根据下面的代码创建对应的库和表:

DROP database IF EXISTS `scott`; CREATE database IF NOT EXISTS `scott` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `scott`; DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号', `dname` varchar(14) DEFAULT NULL COMMENT '部门名称', `loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点' ); DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `empno` int(6) unsigned zerofill NOT NULL COMMENT '雇员编号', `ename` varchar(10) DEFAULT NULL COMMENT '雇员姓名', `job` varchar(9) DEFAULT NULL COMMENT '雇员职位', `mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '雇员领导编号', `hiredate` datetime DEFAULT NULL COMMENT '雇佣时间', `sal` decimal(7,2) DEFAULT NULL COMMENT '工资月薪', `comm` decimal(7,2) DEFAULT NULL COMMENT '奖金', `deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号' ); DROP TABLE IF EXISTS `salgrade`; CREATE TABLE `salgrade` ( `grade` int(11) DEFAULT NULL COMMENT '等级', `losal` int(11) DEFAULT NULL COMMENT '此等级最低工资', `hisal` int(11) DEFAULT NULL COMMENT '此等级最高工资' ); insert into dept (deptno, dname, loc) values (10, 'ACCOUNTING', 'NEW YORK'); insert into dept (deptno, dname, loc) values (20, 'RESEARCH', 'DALLAS'); insert into dept (deptno, dname, loc) values (30, 'SALES', 'CHICAGO'); insert into dept (deptno, dname, loc) values (40, 'OPERATIONS', 'BOSTON'); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7844, 'TURNER', 'SALESMAN', 7698,'1981-09-08', 1500, 0, 30); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20); insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10); insert into salgrade (grade, losal, hisal) values (1, 700, 1200); insert into salgrade (grade, losal, hisal) values (2, 1201, 1400); insert into salgrade (grade, losal, hisal) values (3, 1401, 2000); insert into salgrade (grade, losal, hisal) values (4, 2001, 3000); insert into salgrade (grade, losal, hisal) values (5, 3001, 9999); 

emp表:

dept表:

salgrade表:

7.1【如何显示每个部门的平均工资和最高工资】
7.2【显示每个部门的每种岗位的平均工资和最低工资】
7.3 【显示平均工资低于2000的部门和它的平均工资】

第一步:首先统计各个部门的平均工资(把结果先聚合出来)

第二步:然后having和group by配合使用,对group by结果进行过滤

  • --having经常和group by搭配使用,作用是对分组进行筛选,作用有些像where。
7.4【having 和 where】

SMISH员工不参与统计,显示平均工资低于2000的部门和它的平均工资,在完成这个题目的过程中体会 having 和 where 的区别


八、实战OJ

批量插入数据_牛客题霸_牛客网

找出所有员工当前薪水salary情况_牛客题霸_牛客网

查找最晚入职员工的所有信息_牛客题霸_牛客网

查找入职员工时间升序排名的情况下的倒数第三的员工所有信息_牛客题霸_牛客网

查找薪水记录超过15条的员工号emp_no以及其对应的记录次_牛客题霸_牛客网

获取所有部门当前manager的当前薪水情况,给出dept__牛客题霸_牛客网

从titles表获取按照title进行分组_牛客题霸_牛客网

重复邮件 - LeetCode

大国 - LeetCode

Nth Highest Salary - LeetCode

面试题:

SQL查询中各个关键字的执行先后顺序 from > on> join > where > group by > with > having > select > distinct > order by > limit

下节内置函数

完——


2026年1月10日

至此结束——

我是云边有个稻草人

期待与你的下一次相遇......

Read more

创建 GitHub 私人仓库并上传本地项目的完整步骤

一、准备工作 1. 安装 Git (1)访问 Git 官网 下载并安装 Git。 (2)安装完成后,打开终端(Windows 可使用 Git Bash 或 CMD),输入以下命令验证安装成功: git--version 2. 拥有 GitHub 账号 如果没有账号,前往 GitHub 注册一个免费账号。 二、在 GitHub 上创建私人仓库 1. 登录 GitHub,点击页面右上角的 + 号,选择 New repository。 2. 在 Repository name 栏输入仓库名称(例如 my-private-project)。 3.

最新版 Kimi K2.5 进阶实战全攻略:从开源部署到 Agent 集群搭建(视频理解 + 多模态开发 + 高并发调优)

最新版 Kimi K2.5 进阶实战全攻略:从开源部署到 Agent 集群搭建(视频理解 + 多模态开发 + 高并发调优)

1 技术背景与核心架构原理 1.1 技术定位与版本说明 Kimi K2.5 是月之暗面于2026年初发布的开源多模态大语言模型,聚焦长上下文理解、原生多模态交互、Agent 原生支持三大核心能力,针对工业级落地场景完成了全链路优化。本次实战覆盖的开源版本包括: * kimi-k2.5-chat-70b:基础对话版,支持2000K token 上下文窗口,原生适配工具调用 * kimi-k2.5-multimodal-70b:多模态完整版,新增图像、长视频时序理解能力,支持最长10小时连续视频输入 * kimi-k2.5-agent-70b:Agent 优化版,强化多轮工具链执行、分布式状态同步能力,适配集群化部署 * 量化衍生版本:AWQ 4bit/8bit、FP8 量化版,适配低显存硬件环境,精度损失控制在1%以内 1.2 核心架构与技术亮点 1.2.1

New API 详解:新一代开源大模型统一网关与 AI 资产管理系统(深度 6000 字指南)

New API 详解:新一代开源大模型统一网关与 AI 资产管理系统(深度 6000 字指南) * 开篇:为什么我们需要一个“大模型统一网关”? * 一、项目背景与发展历程 * 二、核心特性详解(为什么 New API 比竞品强) * 1. 统一接口 + 多格式转换(最强兼容性) * 2. 智能路由与高可用 * 3. 精细计费与支付闭环(个人/企业必备) * 4. 现代化管理后台 * 5. 多语言 & 多租户 * 6. 扩展集成 * 7. 安全与可观测性 * 三、支持的模型与渠道(30+ 服务商,100+ 模型) * 四、部署安装完整教程(10 分钟上手)

手把手教你GitHub访问加速的8种姿势(亲测有效版)

手把手教你GitHub访问加速的8种姿势(亲测有效版)

文章目录 * 一、为什么我的GitHub比蜗牛还慢?(真实原因大揭秘) * 二、8大加速方案实测对比(附成功率评分) * 方案1:镜像站大法(成功率⭐️⭐️⭐️⭐️) * 方案2:Hosts文件改造术(成功率⭐️⭐️⭐️⭐️⭐️) * 方案3:SSH协议加速(成功率⭐️⭐️⭐️) * 方案4:Git配置全局代理(程序员必备) * 方案5:油猴脚本加持(小白神器) * 方案6:CDN加速黑科技 * 方案7:DevSidecar工具(一键加速) * 方案8:终极方案——Gitee中转 * 三、各方案适用场景对比表 * 四、个人私藏加速方案(2023最新) * 五、冷知识:GitHub官方加速通道 * 六、常见问题解答 一、为什么我的GitHub比蜗牛还慢?(真实原因大揭秘) 每次打开GitHub都要转圈半小时?clone代码速度只有10kb/s?这其实是典型的"网络迷航症"