【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

Whisper语音识别案例:智能会议纪要生成系统

Whisper语音识别案例:智能会议纪要生成系统 1. 引言 1.1 业务场景描述 在现代企业协作中,会议是信息传递和决策制定的核心环节。然而,会后整理会议纪要往往耗费大量人力,且容易遗漏关键信息。传统方式依赖人工记录或简单录音回放,效率低下、成本高。随着AI语音识别技术的发展,构建一个自动化、高准确率的智能会议纪要生成系统成为可能。 本项目基于 OpenAI 的 Whisper Large v3 模型,结合 Gradio 构建 Web 服务,实现多语言语音自动转录与翻译功能,支持99种语言检测,适用于跨国团队、远程会议等复杂语言环境下的会议内容结构化处理。 1.2 痛点分析 现有会议记录方案存在以下问题: - 人工记录耗时耗力:需专人全程参与,影响专注度。 - 商业ASR服务成本高:按分钟计费模式不适合高频使用场景。 - 离线能力弱:多数云服务依赖网络,隐私和延迟难以保障。 -

By Ne0inhk

解析 ‘LLM-as-a-judge’:如何编写一套可靠的 Prompt 让 GPT-4 为你的 Llama-3 输出打分?

各位编程爱好者、AI工程师们: 大家好!欢迎来到今天的技术讲座。今天,我们将深入探讨一个在当前AI领域备受关注且极具实用价值的话题:如何利用“LLM-as-a-judge”范式,特别是如何编写一套可靠的Prompt,让强大的GPT-4模型为我们的Llama-3模型输出进行打分和评估。 随着大语言模型(LLM)技术的飞速发展,我们拥有了Llama-3、GPT-4等一系列令人惊叹的模型。但随之而来的挑战是:我们如何有效地评估这些模型的性能?特别是在微调(fine-tuning)、Prompt工程优化,甚至是模型架构迭代的过程中,我们需要一个快速、可扩展且尽可能客观的评估机制。传统的基于人工标注的评估方式,虽然“金标准”性强,但成本高昂、耗时费力,难以跟上模型迭代的速度。 正是在这样的背景下,“LLM-as-a-judge”应运而生。它利用一个或多个强大的LLM(通常是能力更强的模型,如GPT-4)来评估另一个LLM(例如我们的Llama-3)的输出质量。这种方法不仅可以大幅提升评估效率,还能在一定程度上自动化评估流程,为我们的模型开发提供快速反馈。 今天的讲座,我将作为一名编程专家

By Ne0inhk

gitea安装及使用方法(常用命令)

Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。接下来说说怎么安装以及一些简单使用方法: 一、下载安装包         1、gitea安装包:Gitea | gitea 二、安装         2.1 gitea 安装                 1、把下载好的安装包(gitea-1.25.3-windows-4.0-amd64.exe),放到D:\gitea(可以自己定义),双击gitea-1.25.3-windows-4.0-amd64.exe; 弹出: 在浏览器中输入:http://localhost:3000 回车后,弹出: 我这里选择SQLite3,

By Ne0inhk
阿里云 99 元/年,部署一套开源 OA、HRM、CRM、ERP 一体化企业管理系统

阿里云 99 元/年,部署一套开源 OA、HRM、CRM、ERP 一体化企业管理系统

阿里云 99 元/年,部署一套开源 OA、HRM、CRM、ERP 一体化企业管理系统 🌐 文档地址:http://ruoyioffice.com | 📦 源码1:https://gitee.com/yqzy1688/ruoyi-office-vben.git |📦 源码2:https://gitee.com/yqzy1688/ruoyi-office.git |📦 源码3:https://github.com/yuqing2026/ruoyi-office.git | 💬 :17156169080(备注「RuoYi Office」) 导读:一套 OA + HRM + CRM + ERP 一体化系统,SaaS 订阅一年少说几万块。但如果告诉你,99

By Ne0inhk