栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第八章、SQL语言学习之函数(流程控制函数)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第八章、SQL语言学习之函数(流程控制函数)

哈罗,各位小伙伴大家好,又见面了,我还是那个不吃饱不干活的小尘,欢迎来到本期的SQL语言之流程控制函数部分,让我们一起进入知识的海洋吧~    

流程控制函数

用于实现一些流程控制。

(1)if函数

用来实现if  else 的效果。

认识:

如图,我们可以知道IF函数有三个参数,第一个是条件表达式,最终结果是true或false。

如果条件成立(返回true),将返回表达式2的值;若条件不成立,则返回表达式2的值。

相当于三元运算符,也能表现出if else的效果。

我们来做几个简单的案例感受一下吧:

<1> 如果10>5,那么就输出“大”;否则输出“小”。

<2> 查询员工表里面的员工是否有奖金,如果有的话,就输出“有”;否则就输出“没有”。

代码:

select
	last_name,
	commission_pct,
	if(commission_pct is null,'没奖金','有奖金')
from
	employees;

 结果展示:

 

 (2)case函数 1、使用一

相当于switch case的效果。

在java中:(比较适合处理等值判断-->变量表达式的值与case后面的常量比较)

switch (变量表达式){

             case  常量1:语句1 ;break;

             ......

             default  :语句n;break;

}

在MYSQL中:

case  要判断的变量(字段)或表达式

when  常量1  then  要显示的值1(或语句1);

when  常量2  then  要显示的值2(或语句2);

.......

else  要显示的值n或语句n;

end

注意:

1、直接写的是case,而且没有大括号。

2、when后面直接加的是常量值,没有冒号,用的是then。

3、then后面加的是要显示的值,不需要加分号。then后面若加的是语句,就需要加分号。

4、when语句可以有多个。

5、默认情况不用default,用的是else。

6、最后结尾用的是end。

案例:

 查询员工的工资,要求:

若部门号=30,那么显示的工资为元工资的1.1倍。

若部门号=40,显示的工资为原工资的1.2倍。

若部门号=50,显示的工资为原工资的3倍。

其他的部门显示的工资为原工资。

分析:这个案例明显要搭配着查询来用。也就是以上这些要放在select后面,就相当于作为表达式来用了。那么then后面就不能放语句了,只能放要显示的值了。

以后我们会用存储过程或者函数。在存储过程里面,就可以单独的把case当成语句来用了。也就是不搭配select,就可以直接用。

case既可以搭配着select来充当表达式,也可以自己单方的形成语句。

本题是当做表达式,即then后面写的是要显示的值。

代码:

SELECT
	salary,
	department_id,
CASE
	department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM 
	employees;

结果展示及相关语句解释:

 

2、使用二 

类似于多重if。

在java中:(判断区间,大于小于的判断)

if(条件1){

            语句1;

}else if(条件2){

            语句2;

}

......

else{

          语句n;

}

在MYSQL中:

case

when  条件1  then  要显示的值1或语句1;

when  条件2  then  要显示的值2或语句2;

......

else  要显示的值n或语句n

end

注意:

1、case后面没有加“条件”。

2、case后面是条件,结果是true或者false。若满足条件,则执行then,即要显示的值。

当然,如果是值,就不用加分号;如果case被单独当做语句,then后面是语句的话,就需要加分号。

3、 

 案例:

查询员工的工资情况:

如果工资>20000,那么显示A级别。

如果工资>15000,那么显示B级别。

如果工资>10000,那么显示C级别。

否则,显示D级别。

分析:

这次我们的判断条件不是等于一个值,而是区间判断。

那么就可以用这种情况下的case啦。

代码:

SELECt
	salary,
CASE
	WHEN salary>20000 THEN 'A'
	WHEN salary>15000 THEN 'B'
	WHEN salary>10000 THEN 'C'
ELSE
	'D'
END AS 工资级别
FROM
	employees;

结果展示: 

好啦,这次的分享就到这儿了。

可能会有点绕,所以要多加练习哦!

原创不易,请多多支持!

我是小尘,

咱们下次再见啦~

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号