MySQL表的查询(二)

呜呜呜,其实我已经写好了这个博客,附有每个功能的截图和详细介绍,但是我一不小心给删了,找不回来了,太伤心了,写了蛮久的,蚌埠住了,我只能让ai帮我写一篇了,因为我真的累了,这太伤我心了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(不过我会过目一遍ai写的博客,确保全部都谈论到才会发布)

本文基于实际案例讲解 MySQL 中最核心的操作:更新、删除、统计、分组

建议搭配实际数据库操作练习


🔄 6.3 Update(更新数据)

✨ 基本语法

复制代码
UPDATE table_name 
SET column = value [, column = value ...]
[WHERE ...]
[ORDER BY ...]
[LIMIT ...];

👉 本质:对查询结果进行修改


📌 示例1:修改单个字段

👉 将"孙悟空"的数学成绩改为 80 分

复制代码
UPDATE exam_result 
SET math = 80 
WHERE name = '孙悟空';

🧾 更新前:

name math
孙悟空 78

🧾 更新后:

name math
孙悟空 80

📌 示例2:同时修改多个字段

复制代码
UPDATE exam_result 
SET math = 60, chinese = 70 
WHERE name = '曹孟德';

👉 一条 SQL 更新多个列


📌 示例3:基于原值更新(🔥常考)

👉 总分倒数前三名,数学 +30

复制代码
UPDATE exam_result 
SET math = math + 30
ORDER BY chinese + math + english 
LIMIT 3;

💡 核心点

  • ❗ MySQL 不支持 math += 30

  • ✅ 必须写成:math = math + 30


⚠️ 示例4:全表更新(危险操作)

复制代码
UPDATE exam_result 
SET chinese = chinese * 2;

👉 没有 WHERE → 所有数据都会被修改

⚠️ 实际开发中必须谨慎!


❌ 6.4 Delete(删除数据)


📌 基本语法

复制代码
DELETE FROM table_name 
[WHERE ...]
[ORDER BY ...]
[LIMIT ...];

🧨 示例1:删除一条数据

复制代码
DELETE FROM exam_result 
WHERE name = '孙悟空';

💣 示例2:删除整张表

复制代码
DELETE FROM table_name;

👉 特点:

  • 数据被删除

  • 自增 id 不会重置


⚡ TRUNCATE(更狠)

复制代码
TRUNCATE table_name;

🔍 DELETE vs TRUNCATE

对比项 DELETE TRUNCATE
删除方式 一行一行删 直接清空
是否可回滚 ✅ 可以 ❌ 不可以
是否重置自增 ❌ 不重置 ✅ 重置
速度 非常快

👉 一句话总结:

TRUNCATE = "直接把表砍了重建"


📥 6.5 插入查询结果(去重经典写法🔥)


🎯 场景:去重数据

原表(有重复)

id name
100 aaa
100 aaa
200 bbb

解决方案

① 创建新表

复制代码
CREATE TABLE new_table LIKE old_table;

② 去重插入

复制代码
INSERT INTO new_table 
SELECT DISTINCT * FROM old_table;

③ 原子替换(高阶技巧🔥)

复制代码
RENAME TABLE old_table TO backup_table,
             new_table TO old_table;

👉 完成"无感知去重"


📊 6.6 聚合函数(统计分析核心)


📌 常用函数

函数 作用
COUNT 数量
SUM 求和
AVG 平均值
MAX 最大值
MIN 最小值

📌 示例1:统计人数

复制代码
SELECT COUNT(*) FROM students;

👉 NULL 不影响结果


📌 示例2:统计有 qq 的人数

复制代码
SELECT COUNT(qq) FROM students;

👉 NULL 会被忽略


📌 示例3:去重统计

复制代码
SELECT COUNT(DISTINCT math) FROM exam_result;

📌 示例4:总分

复制代码
SELECT SUM(math) FROM exam_result;

📌 示例5:平均总分

复制代码
SELECT AVG(chinese + math + english) FROM exam_result;

📌 示例6:最大/最小

复制代码
SELECT MAX(english) FROM exam_result;
SELECT MIN(math) FROM exam_result WHERE math > 70;

📦 6.7 GROUP BY(分组查询🔥重点)


✨ 基本语法

复制代码
SELECT column, aggregate_function
FROM table
GROUP BY column;

📌 示例1:按部门统计平均工资

复制代码
SELECT deptno, AVG(sal), MAX(sal)
FROM EMP
GROUP BY deptno;

📌 示例2:多字段分组

复制代码
SELECT deptno, job, AVG(sal)
FROM EMP
GROUP BY deptno, job;

📌 示例3:分组后筛选(🔥重点)

复制代码
SELECT deptno, AVG(sal) AS avg_sal
FROM EMP
GROUP BY deptno
HAVING avg_sal < 2000;

❗ WHERE vs HAVING

条件 作用阶段
WHERE 分组前
HAVING 分组后

👉 面试常问!


SQL执行顺序(面试必考🔥)

复制代码
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT

🎯 总结(建议背下来)


🧩 一张图理解 CRUD

操作 SQL
INSERT
SELECT
UPDATE
DELETE

🔥 高频面试点

  • UPDATE 是否可以不加 WHERE?(可以,但危险)

  • DELETE 和 TRUNCATE 区别

  • COUNT(*) 和 COUNT(列) 区别

  • WHERE vs HAVING

  • GROUP BY 必须配合聚合函数

虽然文章没了,但是我文章里面用的截图还在,下面是对应操作的所有截图

相关推荐
断问天2 小时前
Faq:Fedora44 Kernel升级后WIFI和声卡都不能使用了
linux·运维·服务器
snow@li2 小时前
数据库-Redis:常用语法 / Redis 核心知识技能梳理
数据库·redis·缓存
wangqiaowq2 小时前
OEE 是 Overall Equipment Effectiveness 的缩写,中文意为设备综合效率
数据库
2301_816660212 小时前
如何在 Telegram Bot 中正确发送 HTML 格式的用户列表消息
jvm·数据库·python
2401_898717662 小时前
CSS如何使得响应式的侧边抽屉附带遮罩渐暗效果
jvm·数据库·python
weixin_458580122 小时前
如何在网页中完整展示数组中所有对象的全部属性
jvm·数据库·python
木易 士心2 小时前
云数据库 Clouder 认证:SQL 基础开发与应用题型分析
数据库·后端·sql·oracle
2403_883261092 小时前
PHP源码能否在Chromebook上运行_ChromeOS硬件限制说明【解答】
jvm·数据库·python
djjdjdjdjjdj2 小时前
golang如何编写DNS查询工具_golang DNS查询工具编写大全
jvm·数据库·python