900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 〖Python 数据库开发实战 - MySQL篇㉕〗- 数据更新操作 - UPDATE 语句

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

时间:2019-09-16 22:43:33

相关推荐

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

前言

✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌

🏆 CSDN博客专家认证、新星计划第三季全栈赛道 MVP 、华为云享专家、阿里云专家博主 🏆

📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀

💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦

文章目录

🐳 UPDATE 语句🐳 UPDATE 语句练习①🐬 UPDATE 语句练习②🐬 UPDATE 语句练习③🐳 UPDATE 语句的表连接(内连接)🐬 UPDATE 语句练习④🐬 UPDATE 语句练习⑤🐳 UPDATE 语句的表连接(外连接)

该章节我们学习一下用于数据更改的 “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_empSET empno = empno + 1, mgr = mgr + 1ORDER BY empno DESC;-- 这里解释一下,为什么会这样。-- 当我们更新第一个员工的工号 +1 的时候,实际上他的下一位员工编号是与当前员工编号 +1 的结果是冲突的,这就是我们使用 ORDER BY 的原因

🐬 UPDATE 语句练习②

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

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

UPDATE t_empSET sal = sal - 100ORDER BY sal + IFNULL(comm,0) DESCLIMIT 3;

🐬 UPDATE 语句练习③

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

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

UPDATE t_empSET sal = sal + 200WHERE deptno=10AND 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 - SQL语句表连接演示案例④:

UPDATE t_emp e JOIN t_dept dSET 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 (SELECT AVG(sal) AS avg FROM t_emp) tON e.sal < t.avgSET e.sal = e.sal+150;-- 实现思路,先利用子查询查询出平均底薪的记录,让后将这个平均底薪的记录作为表与其他的表做连接

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

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

“UPDATE” 外连接语法如下:

UPDATE 表1 [LEFT | RIGHT] JOIN 表2 ON 条件SET 字段1=值1, 字段2=值2, 字段3=值3, ......

思考一个问题:什么情况下,才会使用到 "UPDATE" 语句的外连接呢?

UPDATE 语句的表连接(外连接)演示案例如下:

将没有部门的员工,或者 “SALES” 部门低于 2000 月薪的员工,全部调往 20 部门。分析:"员工表" 里有一位 "张三" 员工,他是没有部门的,直接是有 "员工表"就可以筛选出来分析:但是筛选 "SALES" 部门的时候就需要使用 "部门表",在连接两张表的时候,需要将员工调往 20 部门,就需要将所有符合条件的员工保留下来。分析:但是 "张三" 有没有部门,所以使用 "内连接" 是无法过滤出来的,这个时候就需要用到 "左外连接" 了。分析:左表 为 "员工表" ,将其数据保留下来;然后与 "部门表" 去做连接,然后符合条件的记录,使用 "UPDATE" 修改即可。

UPDATE t_emp e LEFT JOIN t_dept dON e.deptno = d.deptnoSET e.deptno = 20WHERE e.deptno IS NULL OR (d.dname="SALE"AND e.sal < 2000);

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。