欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 【MySQL — 数据库增删改查操作】深入解析MySQL的 Update 和 Delete 操作

【MySQL — 数据库增删改查操作】深入解析MySQL的 Update 和 Delete 操作

2025/2/8 18:07:19 来源:https://blog.csdn.net/2402_84916296/article/details/145369234  浏览:    关键词:【MySQL — 数据库增删改查操作】深入解析MySQL的 Update 和 Delete 操作

   


 1. 测试数据


mysql> select* from exam1;
+------+-----------+---------+------+---------+
| id   | name      | Chinese | Math | English |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.0 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    5 | 刘玄德    |    55.0 | 85.0 |    45.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.0 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
| NULL | NULL      |    NULL | NULL |    90.0 |
+------+-----------+---------+------+---------+
8 rows in set (0.00 sec)

2. Update 修改


update操作,是真正在改硬盘了;这样的修改是"持久有效" 的,所以一定要确保 update 的修改是改对的;

update 表名 set 列名 = 值,列名 = 值.....;

语法 


UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment[,assignment]...        [WHERE where_condition][ORDER BY ...][LIMIT row_count]-- set 在这里的意思是设置

示例 


更新操作


    一次修改一个列     


    把孙悟空数学成绩修改成 80    

update exam1 set Math = 80 where name = '孙悟空';Query OK, 1 row affected (0.06 sec)Rows matched: 1  Changed: 1  Warnings: 0  -- 匹配和修改一行数据

    把所有数学成绩在原有基础上加10分    

update exam1 set Math = Math + 10 where id is not null;ERROR 1264 (22003): Out of range value for column 'Math' at row 1-- 超出 decimal(3,1)的范围,此时是真正修改硬盘数据,所以修改失败

     把所有数学成绩在原有基础上减10分    

update exam1 set Math = Math - 10 ;Query OK, 7 rows affected (0.01 sec)Rows matched: 8  Changed: 7  Warnings: 0-- 匹配的行数和修改的行数不同,说明如果修改的数据基础是 null,则无法修改

    一次修改多个列      


    把曹孟德的语文成绩修改为60,数学成绩修改为70    

update exam1 set Chinese = 60 , Math = 70 where name = '曹孟德';Query OK, 1 row affected (0.01 sec)Rows matched: 1  Changed: 1  Warnings: 0

    引入 order by 操作     


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

-- 查看总分倒数前三的同学select* from exam1 where Chinese + Math + English is not null order by  Chinese + Math + English limit 3;-- 更新总分倒数前三的同学的数学成绩update exam1 set Math = Math + 20 where Chinese + Math + English is not null order by  Chinese + Math + English limit 3;

    特殊情况:好几个同学成绩相同,倒数前三的成绩里有不止3个同学     


Update 注意事项



3. Delete 删除


语法 


DELETE FROM tbl_name  [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]delete from 表名 where 条件/ order by / limit;

示例 


删除操作


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


delete from exam1 where name = '孙悟空';Query OK, 1 row affected (0.01 sec)

Delete 注意事项



    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com