- 1 分类
- 2 分支结构
- 2.1 if函数
- 2.2 case结构
- 2.3 if结构
- 3 循环结构
- 3.1 分类
- 3.2 while
- 3.3 loop
- 3.4 repeat
- 3.5 案例
- 4 综合案例
- 参考资料
- 流程控制语句一般都与 存储过程或函数 搭配使用
顺序结构:程序从上往下依次执行 分支结构:程序从两条或多条路径中选择一条去执行 循环结构:程序在满足一定条件的基础上,重复执行一段代码2 分支结构 2.1 if函数
功能:实现简单的双分支 语法: if(表达式1,表达式2,表达式3) 执行顺序: 如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值 应用:任何地方2.2 case结构
# 案例:创建存储过程,根据传入的成绩,来显示等级,比如 # 传入的成绩: # 90-100,显示A; # 80-90,显示B, # 60-80,显示C, # 否则,显示D delimiter $ create PROCEDURE myp1(in score float) BEGIN CASE when score>=90 and score<=100 then select 'A'; when score>=80 then select 'B'; when score>=60 then select 'C'; else select 'D'; END CASE; END $ call myp1(95); call myp1(85); call myp1(75); call myp1(55);2.3 if结构
功能:实现多重分支 语法: if 条件1 then 语句1; elseif 条件2 then 语句2; 【else 语句n;】 end if; 应用场合:应用在begin end中 # 案例: # 根据传入的成绩,来显示等级,比如 # 传入的成绩: # 90-100,返回A; # 80-90,返回B, # 60-80,返回C, # 否则,返回D # 创建函数 delimiter $ create FUNCTION myf4(score float) RETURNS char BEGIN if score>=90 and score <=100 then return 'A'; elseif score>=80 then return 'B'; elseif score>=60 then return 'C'; else return 'D'; end if; END $ # 调用函数 SELECT myf4(95); SELECT myf4(85); SELECT myf4(75); SELECT myf4(55);3 循环结构 3.1 分类
分类: while、loop、repeat 循环控制: iterate 类似于 continue,继续,结束本次循环,继续下一次 leave 类似于 break,跳出,结束当前所在的循环3.2 while
语法:
【标签:】while 循环条件 do
循环体;
end while【标签】;
类比Java:
while(循环条件){
循环体;
}
3.3 loop
语法: 【标签:】loop 循环体; end loop【标签】; 可以用来模拟简单的死循环3.4 repeat
语法:
【标签:】repeat
循环体;
until 结束循环的条件
end repeat【标签】;
类比Java:
do{
循环体;
}while(循环条件)
3.5 案例
# 案例1:批量插入,根据次数插入到表中多条记录
# 没有循环控制语句
delimiter $
create procedure pro_while1(in insertCount int)
begin
declare i int default 1;
while i<=insertCount do
insert into admin(username,`password`) values(concat('admin',i),concat('pwd',i));
set i=i+1; # 不要忘记,不然死循环
end while;
end $
call pro_while1(100);
# 案例2:批量插入,根据次数插入到表中多条记录,如果次数>20,则停止
# 添加循环控制语句:leave
delimiter $
create procedure pro_while2(in insertCount int)
begin
declare i int default 1;
a:while i<=insertCount do
insert into admin(username,`password`) values(concat('admin',i),concat('pwd',i));
if i>=20 then leave a; # 要加上标签,才能使用循环控制
end if;
set i=i+1;
end while a;
end $
call pro_while2(100);
# 案例3:批量插入,根据次数插入到表中多条记录,只插入第偶数次
# 添加循环控制语句:iterate
delimiter $
create procedure pro_while3(in insertCount int)
begin
declare i int default 0;
a:while i<=insertCount do
set i=i+1;
if MOD(i,2)!=0 then iterate a; # 要加上标签,才能使用循环控制
end if;
insert into admin(username,`password`) values(concat('admin',i),concat('pwd',i));
end while a;
end $
call pro_while3(100);
4 综合案例
参考资料1.MySQL基础教程丨mysql数据库实战(sql数据库优化)



