万叶集 |
---|
🎉 隐约雷鸣,阴霾天空。 🎉 |
🎉 但盼风雨来,能留你在此。 🎉 |
前言:
✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 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自动化,仍有借鉴意义。 MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。
该章节我们将要学习 MySQL 的最后一个类型的函数 —> “条件函数” 。在编程语言中,我们可以使用 “if…else…” 这样的条件判断,在 SQL 语句中也可以实现类似的条件判断。接下来我们就开始学习 “条件函数” ,完成这样的 “条件判断” 吧。
SQL语句中可以利用条件函数来实现编程语言中的条件判断
语法如下:
IFNULL(表达式, 值) -- 这个函数并不陌生,已经使用很多次了,用来判断某一个值是否为 "NULL" 值
- 1
IF(表达式, 值1, 值2) -- 当表达式为 TRUE 时,返回 "值1" ;当表达式为 FALSE 时,返回 "值2"
- 1
- 向各个部门发放礼品,“SALES” 部门发放
礼品A
,其余部门发放礼品B
,打印每名员工获得的礼品。
SELECT e.empno AS "员工编号", e.ename AS "员工姓名", d.dname AS "部门名称", IF(d.dname="SALES", "礼品A", "礼品B") AS "礼品" FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno; -- 使用内连接关联的方式关联两张表 -- 利用 "IF" 条件函数筛选 "SALES" 部分发放 "礼物A",其余部门发放 "礼物B"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 上面我们所使用的是 “IF” 函数只能判断两种状态,要么表达式为真,要么表达式为假。
如果 "条件判断" 有多种状态,此时使用 "IF" 就不是那么的好用了。
- 由此,也就引出了我们接下来将要学习的 “复杂条件判断” 语句,它可以用于复杂条件判断的结果。
语法如下:
CASE WHEN 表达式 THEN 值1 WHEN 表达式 THEN 值2 ...... ELSE 值N END
- 1
- 2
- 3
- 4
- 5
- 6
- 公司决定组织员工集体去旅游,但是每个部门旅游的目的地并不相同。“SALES” 部门去 “苏州拙政园” 地点, “ACCOUNTING” 部门去 “常州恐龙园” 地点,“RESEARCH” 部门去 “上海世博园” 地点。
查询每名员工的旅行地点。
- 利用
"复杂条件判断" 语句
的语法来实现。
CASE WHEN d.dname = "SALES" THEN "苏州拙政园" WHEN d.dname = "ACCOUNTING" THEN "常州恐龙园" WHEN d.dname = "RESEARCH" THEN "上海世博园" WHEN d.dname NOT IN ("SALES", "ACCOUNTING", "RESEARCH") THEN "值班人员" END AS "旅游地点" FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno; -- 这里有个注意的地方,因为员工 "张三" 所在的部门,不在旅游部门行列 -- 所以这里排除掉 "张三" 所在的 "OPERATIONS" 部门,使用内连接,将 "张三" 列为 "值班人员"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 参考下方的调整方案,调整员工的基本工资待遇。
序列 涨薪条件 涨幅 1 “SALES” 部门中工龄超过 “20” 年 10% 2 “SALES” 部门中工龄未超过 “20” 年 5% 3 "ACCOUNTING"部门 +300 4 “RESEARCH” 部门中低于部门平均底薪 +200 5 没有部门的员工 +100
分析:在 "UPDATE" 语句中使用 "CASE...WHEN...THEN..." 语句。
分析:使用到 "员工表" 与 "部门表" 进行联合查询,所以这里使用 "外连接"。
分析:使用 "左外连接" 将 "员工表" 与 "部门表" 连接起来,只修改 "员工表" 即可。
UPDATE t_emp e LEFT JOIN t_dept d ON e.deptno = d.deptno LEFT JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) t ON e.deptno=t.deptno SET e.sal=( CASE WHEN d.dname="SALES" AND DATEDIFF(NOW(),e.hiredate)/365>=20 THEN e.sal*1.1 WHEN d.dname="SALES" AND DATEDIFF(NOW(),e.hiredate)/365<20 THEN e.sal*1.05 WHEN d.dname="ACCOUNTING" THEN e.sal+300 WHEN d.dname="ACCOUNTING" AND e.sal<t.avg THEN e.sal+200 WHEN d.dname IS NULL THEN e.sal+100 ELSE e.sal END ); -- 这里我就不用文字来解释了,大家可以自己开动一下脑筋,来分析一下这个SQL语句吧。(*^▽^*)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16