mysql 流程控制结构

流程顺序结构:

顺序结构:程序从上到下依次执行

分支结构:程序从两条或多条路径中选择一条去执行

循环结构:程序在满足一定条件的基础上,重复执行一段代码

顺序结构比较简单不再多做解释,接下来看一下分支结构和循环结构

一、分支结构:

1、if函数

功能:实现简单的双分支

语法:

if(表达式1,表达式2,表达式3)

执行顺序:

如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值

应用:任何地方

2、case结构

情况1:类似于java中的switch语句,一般用于实现等值判断

语法:

case 变量|表达式|字段

when 要判断的值 then 返回值1或语句1;

when 要判断的值 then 返回值2或语句2;

.....

else 要返回的值或语句n;

end case;

情况2:类似于java中的多重if语句,一般用于实现区间判断

case 

when 要判断的条件1   then 返回值1或语句1;

when 要判断的条件2   then 返回值2或语句2;

.....

else 要返回的值或语句n;

end case;

特点:

可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,begin end中或者begin end外面

可以作为独立的语句去使用,只能放在begin end中

如果when中的值满足或者说条件成立,则执行对应的then后面的语句,并且结束case

如果都不满足,则执行else中的语句或值

else语句可以省略,如果else省略了,并且所有的where条件都不满足,则返回null

示例:

#创建一个存储过程,根据传入的成绩,来显示等级

create procedure test_case(in score int)

begin 

    case 
    when score >=90 then select 'A';
    when score >=80 then select 'B';
    when score >=60 then select 'C';
    else select 'D';
    end case;

end $

3、if结构

功能:实现多重分支

语法:

if  条件1 then 语句1

elseif 条件2 then 语句2

else 语句n

end if;

应用场合:只能应用在begin end中

这个比较常见,也比较简单,就不再示例

二、循环结构

分类:

while 、loop 、repeat

循环控制(跳转语句):

iterate类似于continue 结束本次循环,继续下一次

leave 类似于break,直接结束循环

1、while

语法:

【标签 :】while循环条件 do 

          循环体;

end while  【标签】;

示例

#批量插入,根据次数插入到admin表中多条记录

create procedure pro_while(in insertCount int)

begin

    declare i int default 1;
    while i< = insertCount do
        insert into admin(username ,password) values(concat('rose',i),'666');
        set i=i+1;
    end while;

end $

#加上跳出语句,注意区分两者的区别(要加标签)
create procedure pro_while(in insertCount int)

begin

    declare i int default 1;
    a:while i< = insertCount do
        insert into admin(username ,password) values(concat('rose',i),'666');
        if i>=20 then leave a;
        end if; 
        set i=i+1;
    end while a;

end $


#跳出语句是iterate

create procedure pro_while(in insertCount int)

begin

    declare i int default 1;
    a:while i< = insertCount do
    set i=i+1;
    if mod(i,2)!=0 then iterate
        end if 
        insert into admin(username ,password) values(concat('rose',i),'666');

    end while a;

end $

2、loop

语法:

【标签 :】loop 

          循环体;

end loop  【标签】;

可以用来模拟简单的死循环

3、repeat

语法:

【标签 :】repeat

          循环体;

until 结束循环的条件

end repeat 【标签】;

猜你喜欢

转载自blog.csdn.net/weixin_42575020/article/details/113572696