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

【MySQL基础】流程控制

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

【MySQL基础】流程控制

文章目录
  • 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 综合案例
  • 参考资料

1 分类
  • 流程控制语句一般都与 存储过程或函数 搭配使用
顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
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数据库优化)

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

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

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