数据库学习(20)MySQL数据库函数——MySQL条件函数

条件语句——IFNULL/IF语句(简单条件判断)

SQL语句中可以利用条件函数来实现编程语言里的条件判断。
使用方法:

IFNULL(表达式,)
IF(表达式,1,2)

MySQL条件函数练习1

中秋节公司发放礼品,SALES部门发放礼品A,其余部门发放礼品B,打印每名员工获得的礼品。

SELECT 
	e.empno,e.ename,d.dname,
	IF(d.dname="SALES","礼品A","礼品B") AS present
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;

条件语句——CASE语句(复杂条件判断)

复杂的条件判断可以应用条件语句来实现,比IF语句功能更强大。
使用方法:

CASE
	WHEN 表达式 THEN1
WHEN 表达式 THEN2
......
ELSE 值N
END

MySQL条件函数练习2

公司年庆决定组织员工集体旅游,每个部门旅游目的地是不同的。SALES部门去P1地点,ACCOUNTING部门去P2地点,RESEARCH部门去P3地点,查询每名员工的旅行地点。

SELECT 
	e.empno,e.ename,
	CASE 
		WHEN d.dname="SALES" THEN "P1"
		WHEN d.dname="ACCOUNTING" THEN "P2"
		WHEN d.dname="RESEARCH" THEN "P3"
	END AS place
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;

MySQL条件函数练习3

公司决定为员工调整基本工资,具体调整方案如下:

序号条件涨幅
1SALES部门中工龄超过20年10%
2SALES部门中工龄不满20年5%
3ACCOUNTING部门+300元
4RESEARCH部门里低于部门平均底薪+200元
5没有部门的员工+100元
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="RESEARCH" AND e.sal<t.avg then e.sal+200
		WHEN e.deptno IS NULL THEN e.sal+100
		ELSE e.sal
	END
);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值