流程顺序结构:
顺序结构:程序从上到下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
顺序结构比较简单不再多做解释,接下来看一下分支结构和循环结构
一、分支结构:
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 【标签】;