0


〖Python 数据库开发实战 - MySQL篇㉕〗- 数据更新操作 - UPDATE 语句


万叶集🎉 隐约雷鸣,阴霾天空。 🎉🎉 但盼风雨来,能留你在此。 🎉


前言
✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌
🏆 CSDN博客专家认证、新星计划第三季全栈赛道 MVP 、华为云享专家、阿里云专家博主 🏆
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


专栏系列(点击解锁)学习路线(点击解锁)知识定位 🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。 语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。 自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 掌握关系型与非关系数据库知识,提升数据库实战开发能力。 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工智能入门 更新中 网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者 网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。 vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。 shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结] WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器 测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得! 测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。 RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。 Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


在这里插入图片描述


文章目录

该章节我们学习一下用于数据更改的 “UPDATE” 语句, “UPDATE” 语句也是属于 DML 这一类数据库操作语言。

🐳 UPDATE 语句

  • UPDATE 语句用于修改表的记录,语法如下
UPDATEIGNORE 表名
SET 字段1=值1, 字段2=值2, 字段3=值3,......WHERE 条件1......ORDERBY......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 +1ORDERBY empno DESC;-- 这里解释一下,为什么会这样。-- 当我们更新第一个员工的工号 +1 的时候,实际上他的下一位员工编号是与当前员工编号 +1 的结果是冲突的,这就是我们使用 ORDER BY 的原因

🐬 UPDATE 语句练习②

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

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

(首先按照月收入排成降序,然后取前3条记录,然后再执行 "UPDATE" 的操作)
UPDATE t_emp
SET sal = sal -100ORDERBY sal + IFNULL(comm,0)DESCLIMIT3;

🐬 UPDATE 语句练习③

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

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

(筛选 10 部门与工龄超过20年的员工写在 "WHERE" 子句即可,底薪增加 200 写在SET子句)
UPDATE t_emp
SET sal = sal +200WHERE deptno=10AND DATEDIFF(NOW(),hiredate)/365>=20;

🐳 UPDATE 语句的表连接(内连接)

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

  • UPDATE 语句的表连接的语法如下:(内连接方式)
UPDATE 表1JOIN 表2ON 条件
SET 字段1=值1, 字段2=值2,......;-- 这里的字段是比较有意思的,不是说 SET 关键字修改的字段只能来自一张表,它可以来自 被关联的任意一张表。

  • UPDATE 语句的表连接的语法如下:(内连接变种方式)
UPDATE 表1, 表2SET 字段1=值1, 字段2=值2,......WHERE 连接条件;
该变种语法,也可以实现表的内连接的。

🐬 UPDATE 语句练习④

  • 把 ALLEN 调往 “RESEARCH” 部门,职务调整为 “ANALYST”。
  • 这个需求的 SQL 语句牵扯到两张表,这里呢我们可以通过子查询的方式来实现。但是 UPDATE 语句中的子查询为相关子查询,所以并不建议使用。比较合适的方式就是实用 “表连接” 的方式来实现,具体参考 “UPDATE 语句的表连接” 语法。(参考上文中的 “UPDATE 语句的表连接” 语法)

UPDATE - SQL语句表连接演示案例④:

UPDATE t_emp e JOIN t_dept d
SET e.deptno=d.deptno, e.job="ANALYST", d.loc="Beijing"WHERE e.ename ="ALLEN"AND d.dname="RESEARCH";-- 区别于上文中的带有 "ON" 关键字的语法,这里如果使用的话,会将 "ALLEN" 的职位锁死。

🐬 UPDATE 语句练习⑤

  • 把底薪低于公司平均底薪的员工,底薪增加 150 。(注意不能使用相关子查询,用表连接的方式实现。)

UPDATE - SQL语句表连接演示案例④:

UPDATE t_emp e JOIN(SELECTAVG(sal)AS avg FROM t_emp) t
ON e.sal < t.avg
SET e.sal =  e.sal+150;-- 实现思路,先利用子查询查询出平均底薪的记录,让后将这个平均底薪的记录作为表与其他的表做连接

🐳 UPDATE 语句的表连接(外连接)

  • 上面我们学习了 “UPDATE” 语句中的内连接使用方法, 接下俩就看一看 “UPDATE” 语句中的 外连接 使用方法吧

“UPDATE” 外连接语法如下:

UPDATE 表1[LEFT|RIGHT]JOIN 表2ON 条件
SET 字段1=值1, 字段2=值2, 字段3=值3,......
思考一个问题:什么情况下,才会使用到 "UPDATE" 语句的外连接呢?

UPDATE 语句的表连接(外连接)演示案例如下:
  • 将没有部门的员工,或者 “SALES” 部门低于 2000 月薪的员工,全部调往 20 部门。 - 分析:"员工表" 里有一位 "张三" 员工,他是没有部门的,直接是有 "员工表"就可以筛选出来- 分析:但是筛选 "SALES" 部门的时候就需要使用 "部门表",在连接两张表的时候,需要将员工调往 20 部门,就需要将所有符合条件的员工保留下来。- 分析:但是 "张三" 有没有部门,所以使用 "内连接" 是无法过滤出来的,这个时候就需要用到 "左外连接" 了。- 分析:左表 为 "员工表" ,将其数据保留下来;然后与 "部门表" 去做连接,然后符合条件的记录,使用 "UPDATE" 修改即可。
UPDATE t_emp e LEFTJOIN  t_dept d
ON e.deptno = d.deptno
SET e.deptno =20WHERE e.deptno ISNULLOR(d.dname="SALE"AND e.sal <2000);

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




本文转载自: https://blog.csdn.net/weixin_42250835/article/details/126219628
版权归原作者 不渴望力量的哈士奇 所有, 如有侵权,请联系我们删除。

“〖Python 数据库开发实战 - MySQL篇㉕〗- 数据更新操作 - UPDATE 语句”的评论:

还没有评论