• 〖Python 数据库开发实战 - MySQL篇㉚〗- MySQL 条件函数


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


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 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 表达式 THEN1
    	WHEN 表达式 THEN2
    	......
    	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


  • 相关阅读:
    腾讯云2023年最新优惠券领取入口
    用python 实现采集百度热搜
    电脑C盘怎么清理到最干净
    那些年那些神码
    python项目模块打包本地发布并上传到到PyPI官网
    复习单片机:IO串转并(内含:1. 74HC595 芯片介绍+2. 硬件设计+3. 软件设计+4.原始代码+5. 实验现象)
    如何修改rpm包
    Python学习--with语句
    PHY6222国产低功耗低成本BLE蓝牙MESH组网工控数据采集芯片
    JVM基础:初识JVM
  • 原文地址:https://blog.csdn.net/weixin_42250835/article/details/126326273