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-07-07
  • MySQL的表空间是什么

    MySQL的表空间是什么

    这篇文章主要介绍了MySQL的表空间是什么,帮助大家更好的理解和使用MySQL表的相关知识,感兴趣的朋友可以了解下
    2020-11-11
  • CentOS7使用rpm包安装mysql 5.7.18

    CentOS7使用rpm包安装mysql 5.7.18

    这篇文章主要为大家详细介绍了CentOS7使用rpm包安装mysql 5.7.18的相关步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • mysql Out of memory (Needed 16777224 bytes)的错误解决

    mysql Out of memory (Needed 16777224 bytes)的错误解决

    至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来
    2012-07-07
  • MySql树形结构(多级菜单)查询设计方案

    MySql树形结构(多级菜单)查询设计方案

    本文主要介绍了MySql树形结构(多级菜单)查询设计方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • mysql中批量插入数据(1万、10万、100万、1000万、1亿级别)

    mysql中批量插入数据(1万、10万、100万、1000万、1亿级别)

    本文主要介绍了mysql中批量插入数据(1万、10万、100万、1000万、1亿级别),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Mysql单库迁移的操作方法

    Mysql单库迁移的操作方法

    这篇文章主要介绍了Mysql单库迁移的相关知识,包括导出数据库文件,上传至目标机器的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • MySQL优化方案之开启慢查询日志

    MySQL优化方案之开启慢查询日志

    相信大家应该都知道MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,下面这篇文章主要给大家介绍了关于MySQL优化方案之开启慢查询日志的相关资料,需要的朋友可以参考下
    2021-12-12
  • MySQL中B树索引和B+树索引的区别详解

    MySQL中B树索引和B+树索引的区别详解

    这篇文章主要为大家详细介绍了MySQL中B树索引和B+树索引的区别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • mysql如何查询重复数据并删除

    mysql如何查询重复数据并删除

    这篇文章主要介绍了mysql如何查询重复数据并删除问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论