MySQL学习之数据更新操作详解

 更新时间:2022年08月08日 09:11:47   作者:渴望力量的哈士奇  
这篇文章我们将学习一下用于数据更改的 “UPDATE” 语句, “UPDATE” 语句也是属于 DML 这一类数据库操作语言,感兴趣的可以了解一下

UPDATE 语句

UPDATE 语句用于修改表的记录,语法如下

UPDATE IGNORE 表名
SET 字段1=值1, 字段2=值2, 字段3=值3, ......
WHERE 条件1 ......
ORDER BY ......
LIMIT ......;

-- 注意:IGNORE - 是可选条件,使用后,会针对有冲突的修改记录忽略
-- 注意:WHERE - 也是可选条件,使用了就是有条件的修改记录;不使用就是无条件的修改记录,也就是针对全表范围进行记录的修改 
-- 注意:ORDER BY - 之所以使用排序主要是针对类似多条记录,批量递增的形式去修改(比如说员工工资的统一普调,员工工号的递增加1)。
-- 注意:LIMIT - UPDATE 语句中的 LIMIT 子句只能写一个参数,不能像之前那样写两个参数。

UPDATE 语句的执行顺序:UPDATE ---> WHERE ---> ORDER BY ---> LIMIT ---> SET

UPDATE 语句练习①

把每个员工的编号和上司的编号 +1 ,利用 “ORDER BY” 子句完成。

“UPDATE” - SQL语句演示案例①:

UPDATE t_emp
SET empno = empno + 1, mgr = mgr + 1
ORDER BY empno DESC;

-- 这里解释一下,为什么会这样。
-- 当我们更新第一个员工的工号 +1 的时候,实际上他的下一位员工编号是与当前员工编号 +1 的结果是冲突的,这就是我们使用 ORDER BY 的原因

UPDATE 语句练习②

将月收入前3名的员工月薪减 100 ,使用 LIMIT 子句完成。

“UPDATE” - SQL语句演示案例②:(首先按照月收入排成降序,然后取前3条记录,然后再执行 "UPDATE" 的操作)

UPDATE t_emp
SET sal = sal - 100
ORDER BY sal + IFNULL(comm,0) DESC
LIMIT 3;

UPDATE 语句练习③

将 10 部门中,工龄超过 20 年的员工,底薪增加 200 。

“UPDATE” - SQL语句演示案例③:(筛选 10 部门与工龄超过20年的员工写在 "WHERE" 子句即可,底薪增加 200 写在SET子句)

UPDATE t_emp
SET sal = sal + 200
WHERE deptno=10
AND DATEDIFF(NOW(),hiredate)/365 >= 20;

UPDATE 语句的表连接

因为相关子查询的效率非常低,所以我可以利用表连接的方式来改造 “UPDATE” 语句。

表连接的 “UPDATE” 语句可以修改多张表的记录。

UPDATE 语句的表连接的语法如下:(内连接方式)

UPDATE 表1 JOIN 表2 ON 条件
SET 字段1=值1, 字段2=值2, ......;

-- 这里的字段是比较有意思的,不是说 SET 关键字修改的字段只能来自一张表,它可以来自 被关联的任意一张表。

UPDATE 语句的表连接的语法如下:(内连接变种方式)

UPDATE 表1, 表2 
SET 字段1=值1, 字段2=值2, ......
WHERE 连接条件;

UPDATE 语句练习④

把 ALLEN 调往 “RESEARCH” 部门,职务调整为 “ANALYST”。

这个需求的 SQL 语句牵扯到两张表,这里呢我们可以通过子查询的方式来实现。但是 UPDATE 语句中的子查询为相关子查询,所以并不建议使用。比较合适的方式就是实用 “表连接” 的方式来实现,具体参考 “UPDATE 语句的表连接” 语法。

通过练习题的方式更鼓 “UPDATE” 的语法还是挺有意思的,可以开阔思路,有助于我们巩固 “UPDATE” 的语法。

到此这篇关于MySQL学习之数据更新操作详解的文章就介绍到这了,更多相关MySQL数据更新内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySql安装步骤图文教程及中文乱码的解决方案

    MySql安装步骤图文教程及中文乱码的解决方案

    这篇文章主要介绍了MySql安装步骤图文教程及中文乱码的解决方案,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • MySQL如何运行sql文件图文详解(以Navicat做演示)

    MySQL如何运行sql文件图文详解(以Navicat做演示)

    Navicat是MySQL非常好用的可视化管理工具,功能非常强大,能满足我们日常数据库开发的所有需求,这篇文章主要给大家介绍了关于MySQL如何运行sql文件(以Navicat做演示)的相关资料,需要的朋友可以参考下
    2024-08-08
  • mysql日志系统redo log和bin log介绍

    mysql日志系统redo log和bin log介绍

    这篇文章主要介绍了mysql日志系统redo log和bin log介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 完美解决MySQL数据库服务器CPU飙升问题

    完美解决MySQL数据库服务器CPU飙升问题

    这篇文章主要介绍了解决 MySQL 数据库服务器 CPU 飙升的方法,包括定位问题(如使用工具监控、查看慢查询日志)、优化 SQL 查询、调整配置参数、优化数据库架构、检查硬件资源、处理锁竞争问题等,还通过电商业务系统的案例进行了详细分析及给出解决方法,最终优化效果显著
    2025-02-02
  • MySQL主从复制延时问题的解决方案

    MySQL主从复制延时问题的解决方案

    MySQL主从一直是面试常客,里面的知识点虽然基础,但是能回答全的同学不多,如果我们遇到问如何解决MySQL主从复制延时问题呢,所以本文给大家讲解了MySQL主从复制延时问题的解决方法,需要的朋友可以参考下
    2023-12-12
  • MySQL-8.0.26配置图文教程

    MySQL-8.0.26配置图文教程

    最近公司项目更换数据库版本,在此记录分享一下自己安装配置MySQL8.0版本的过程吧,本文通过图文并茂的形式给大家介绍的非常详细,对MySQL-8.0.26配置教程感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • MySQL库操作和表操作详细图文教程

    MySQL库操作和表操作详细图文教程

    在MySQL数据库中表是一种很重要的数据库对象,是组成数据库的基本元素,由若干个字段组成,主要用来实现存储数据记录,这篇文章主要给大家介绍了关于MySQL库操作和表操作的相关资料,需要的朋友可以参考下
    2023-12-12
  • mysql如何创建数据库并指定字符集

    mysql如何创建数据库并指定字符集

    这篇文章主要介绍了mysql如何创建数据库并指定字符集问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • MySQL数据库索引order by排序精讲

    MySQL数据库索引order by排序精讲

    我们今天说的并不是大数据下该如何优雅的排序,如何提升排序性能的问题,我们来仔细分析说一说MySQL中的排序问题,希望可以对正在阅读的同学们有所启迪帮助
    2021-11-11
  • MySQL性能优化配置参数之thread_cache和table_cache详解

    MySQL性能优化配置参数之thread_cache和table_cache详解

    这篇文章主要介绍了MySQL性能优化配置参数之thread_cache和table_cache详解,THREAD_CACHE是Mysql的连接池,table_cache指定表高速缓存的大小,需要的朋友可以参考下
    2014-07-07

最新评论