6.1 MySQL数字函数和条件函数

以前我们在课程中使用过一些mysql的内置函数,比如说四舍五入的round函数,做日期计算的data, datediff函数等等。那么本次课程咱们就来系统的学习一下mysql的这些内置函数,我们使用编程语言写程序的时候,通常会把某一项业务功能封装的函数里边,其实数据库也是这么做的,它为我们预先定义了很多函数,以供我们去使用

一、数字函数 

函数功能用例
ABS绝对值ABS(-100)
ROUND四舍五入ROUND(4.62)
FLOOR强制舍位到最近的整数FLOOR(9.9)
CEIL强制进位到最近的整数CEIL(3.2)
POWER幂函数POWER(2,3)
LOG对数函数LOG(7,3)
LN对数函数LN(10)
SQRT开平方SQRT(9)
PI圆周率PI()
SIN三角函数SIN(1)
COS三角函数COS(1)
TAN三角函数TAN(1)
COT三角函数COT(1)
RADIANS角度转换弧度RADIANS(30)
DEGREES弧度转换角度DEGREES(1)

二、条件函数

Mysql里边给我们提供了两个函数,可以实现简单的条件判断。比如说ifnull这个函数我们并不陌生了,那么它是用来判断某一个值是否为null值。如果为now

还有一个函数叫做if函数,这个函数非常像编程语言里边的三元运算符。当这个表达式结果为真的情况下,返回的是第一个值。如果说前面的表达式的结果为false, 那么返回的是第二个值

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

select
e.empno,e.ename,d.dname,
if(d.dname="SALES","礼品A","礼品B")
from t_emp e join t_dept d on e.deptno=d.deptno

 练习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

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

序号条件涨幅
1SELES部门里工龄超过20年10%
2SELES部门里工龄不满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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值