当前位置: 首页 > news >正文

MySQL【基本查询下 - 表的增删改查】

一、Update

语法:

核心注意事项

  1. 必须加 WHERE 子句:若无 WHERE,会更新全表数据,生产环境慎用!
  2. 支持同时更新多列,列之间用逗号分隔;
  3. 支持基于原有值更新(如math = math + 30,不支持math +=30语法;
  4. 可搭配 ORDER BY、LIMIT 实现精准更新指定条数的数据。

对查询结果进行列值更新

1.1 将孙悟空同学的数据成绩变更为80分

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

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

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

没有where 子句 ,则更新全表 !!!

二、Delete

删除表中的数据,分为删除指定数据删除全表数据。

2.1 删除数据

语法:

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

必须加 WHERE 子句,否则会删除全表数据,示例:

2.1.2 删除整张表的数据

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

自增序列的计数器并不会置零~

2.2 截断表

语法:

注意:这个操作慎用!!

  • 只能对整张操作 , 不能像delete 一样针对部分数据操作
  • 实际上Mysql不对数据操作 , 所以比delete更快 ,但是truncate在删除数据的时候,并不经过真正的事务,所以无法回归
  • 会重置auto_increment项~
操作语法特点自增列事务回滚
DELETEDELETE FROM 表名逐行删除,会记录日志保留原有自增值,新插入从原最大值继续支持(InnoDB)
TRUNCATETRUNCATE [TABLE] 表名直接清空表,不记录行日志,速度更快重置自增列为 1,重新开始不支持

三、插入查询结果

插入查询结果聚合函数,实现数据的批量处理与统计分析。

语法:

经典场景:删除表中的重复数据,只保留一份。

为什么最后是通过rename 方式进行?

就是单纯的想等一些都就绪了,然后统一放入、更新、生效

四、聚合函数

聚合函数用于对一组数据进行统计计算,返回单个结果,是数据分析的基础,常用聚合函数如下:

函数说明注意
COUNT([DISTINCT] expr)统计数据条数COUNT (*) 不受 NULL 影响,COUNT (列) 会忽略 NULL
SUM([DISTINCT] expr)统计数据总和非数字类型无意义
AVG([DISTINCT] expr)统计平均值非数字类型无意义,忽略 NULL
MAX([DISTINCT] expr)统计最大值忽略 NULL
MIN([DISTINCT] expr)统计最小值忽略 NULL
-- 1. 统计学生总数(COUNT(*)) SELECT COUNT(*) FROM students; -- 2. 统计有QQ号的学生数(COUNT(列)忽略NULL) SELECT COUNT(qq) FROM students; -- 3. 统计数学成绩总分、平均分 SELECT SUM(math), AVG(math) FROM exam_result; -- 4. 统计英语最高分、70分以上的数学最低分 SELECT MAX(english), MIN(math) FROM exam_result WHERE math > 70; -- 5. 统计去重后的数学成绩个数 SELECT COUNT(DISTINCT math) FROM exam_result;

4.1 统计班级有多少同学

4.2 统计班级收集的qq号有多少

4.3 统计本次考试的数学成绩分数个数

4.4 统计数学成绩总分

4.5 统计平均总分

4.6 返回英语最高分

4.7 返回>70分以上的数学最低分

五、group by 子句的使用

聚合函数通常与GROUP BY搭配使用,实现按指定列分组统计,核心语法:

核心规则

  1. GROUP BY 后可跟多列,按多列组合分组;
  2. 需对分组结果再筛选时,使用HAVING(而非 WHERE),HAVING 支持聚合函数 / 别名;
  3. WHERE 筛选原始数据,HAVING 筛选分组后的数据
-- 1. 按部门分组,统计每个部门的平均工资、最高工资 SELECT deptno, AVG(sal), MAX(sal) FROM EMP GROUP BY deptno; -- 2. 按部门+岗位分组,统计每个部门每个岗位的平均工资、最低工资 SELECT deptno, job, AVG(sal), MIN(sal) FROM EMP GROUP BY deptno, job; -- 3. 统计平均工资低于2000的部门(HAVING筛选分组结果) SELECT deptno, AVG(sal) myavg FROM EMP GROUP BY deptno HAVING myavg < 2000;

  • 如何显示每个部门的平均工资和最高工资:

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

  • 显示平均工资低于2000的部门和它的平均工资
    • 先统计各个部门的平均工资【结果先聚合出来】

  • 对聚合的结果进行判断 【having和group by配合使用,对group by 的结果进行过滤

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

HAVING 和 WHERE :

特性WHEREHAVING
筛选时机分组(GROUP BY)之前分组(GROUP BY)之后
筛选对象原始的、未分组的单行数据分组后的「统计结果」(组级数据)
能否用聚合函数❌ 不可以(操作的是单行数据)✅ 可以(操作的是分组统计结果)
适用场景过滤单个符合条件的记录过滤符合条件的分组

WHERE 是「分组前」筛选单行数据(不能用聚合函数),HAVING 是「分组后」筛选分组结果(可以用聚合函数);

通俗举例:假设你要统计「每个班级数学平均分超过 80 分的班级」:

  • WHERE:先筛选「数学分数 > 0 分的学生」(排除无效数据),这是对单个学生的筛选;
  • HAVING:在按班级分组计算平均分后,筛选「平均分 > 80 分的班级」,这是对整个班级的筛选。

  • 不要单纯的认为,只有磁盘上表结构导入到mysql , 真实存在的表才叫表,这是不对的
  • 中间筛选出来的,包括最终结果,在我看来,全部都是逻辑上的表 !!!
  • ''MYSQL一切皆表'',未来只要我们能够处理好单表的CURD,所有sql场景,我们也可以用同一种方式进行~
http://www.jsqmd.com/news/486308/

相关文章:

  • 为2026年营销活动找富士山素材,这五类站点的筛选顺序很重要
  • 信号与系统分析2026(春季)作业要求:第五次作业
  • Agent Hub:给你的 OpenClaw 装一个多模型军团
  • 基于C语言的轻量级在线商城服务端设计与实现
  • sdut-程序设计基础Ⅰ-实验7-函数(函数题)
  • 淘宝商品详情字段解析:SKU、价格、库存接口全梳理
  • HakcMyVM-Darkside
  • Java Map 集合深度解析(HashMap / ConcurrentHashMap 原理详解)
  • 创建了项目实训博客
  • 基于VirtualLab Fusion的复合光源仿真
  • 计算机毕业设计springboot基于Spark的豆瓣电影数据分析与可视化系统 基于SpringBoot与Spark的豆瓣影片数据挖掘及可视化平台 SpringBoot框架下融合Spark的豆瓣影视信
  • 一篇看懂:进程、服务、启动项、计划任务到底是什么?
  • hot 100 300.最长递增子序列
  • 六城高端腕表维修实操指南:36品牌故障应急+正规网点避坑(表主实测版) - 时光修表匠
  • 第三章:机器学习初醒:从数据中寻找规律
  • 算法设计与分析-习题4.3
  • 2026年青浦区高质量家电门店TOP榜:哪几家值得优先光顾?
  • 零基础Java Web初学者(三):Servlet的两种配置方法
  • 2026 最新|语言发育迟缓优质机构推荐,家长安心选 - 品牌测评鉴赏家
  • 2026少儿英语口语培训机构推荐:三大核心解锁自信沟通力 - 品牌2026
  • 哪个语音公司靠谱?如何选择安全稳定的语音通知平台? - Qqinqin
  • web三个组成部分
  • 2026致孤独症孩子家长:选对训练机构,是给“星星的孩子”最好的底气 - 品牌测评鉴赏家
  • 杭州湖州嘉兴绍兴到广东物流专线哪个公司好
  • System常用接口
  • P14346 [JOISC 2019] 指定城市 / Designated Cities - Link
  • 2026成都自闭症机构大揭秘:如何为孩子找到最佳康复之路 - 品牌测评鉴赏家
  • 深圳坪山青少年篮球培训哪里比较好?2026年机构对比整理 - 前沿公社
  • 科学启蒙,多维成长:2026六大主流少儿英语培训机构推荐 - 品牌2026
  • 孤独症机构怎么选?教育博主实测避坑,2026国标落地后家长必看指南 - 品牌测评鉴赏家