MySQL-流程控制结构

北战南征 提交于 2020-02-26 11:57:48

流程控制结构
顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础桑,重复执行一段代码

 

分支结构

 

1、if函数
功能:实现简单的双分支
语法:
if(表达式1,表达式2,表达式3)
执行顺序:
如果表达式1成立,则if函数就返回表达式2的值,否则返回表达式3的值
应用场景:任何地方

2、case结构

 

 1 情况一、类似于Java中的switch语句,一般用于实现等值判断
 2 语法:
 3         case 变量|表达式|字段
 4         when 要判断的值1 then 返回的值1或语句1;
 5         when 要判断的值2 then 返回的值2或语句2;
 6         ...
 7         else 要返回的值n或语句n;
 8         END case;
 9 情况二、类似于Java中的多重if语句,一般用于实现区间的判断
10 语法:
11      case 
12          when 要判断的条件1 then 返回值1或语句1;
13          when 要判断的条件2 then 返回值2或语句2;
14          ...
15          else 要返回的值n或语句n;
16          end case;
17          
18 特点:
19 (1)
20 可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,begin  end中或begin end的外边
21 可以作为独立的语句去使用,只能放在begin end中
22 (2)
23 如果when中的值满足条件或条件成立,则执行对应的then后面的语句,并且结束case
24 如果都不满足,则执行else中的语句或值
25 (3)
26 else可以省略,如果else省略了,并且所有的when条件都不满足,则返回null

 

案例:创建存储过程,根据传入的成绩,来显示等级,成绩 90-100显示A,80-90显示B,80-60显示C,否则显示D

 1 CREATE PROCEDURE test_case(in score int)
 2 begin
 3      case 
 4          when score>=90 and score<=100 then select 'A';
 5          when score>=80  then select 'B';
 6          when score>=60  then select 'C';
 7          ELSE SELECT 'D';
 8          END CASE;
 9 end $
10 CALL test_case(95)$

运行结果:

3、实现多重分支

 

语法:
if 条件1 then 语句1
elseif 条件2 then 语句2
elseif 条件3 then 语句3
...
[else 语句n]
end if;
应用场景:应用在begin end中

案例:创建函数,根据传入的成绩,来显示等级,成绩 90-100显示A,80-90显示B,80-60显示C,否则显示D

1 create FUNCTION test_if(score int) RETURNS char
2 begin
3         if score>=90 and score<=100 then return 'A';
4         ELSEIF SCORE>=80 then return 'B';
5         ELSEIF SCORE>=60 THEN RETURN 'C';
6         ELSE RETURN 'D';
7         END IF;
8 END $

运行结果:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!