当前位置: 代码网 > it编程>数据库>Mysql > mysql的判断语句方式

mysql的判断语句方式

2025年12月13日 Mysql 我要评论
ifif 用于做条件判断,具体的语法结构如下,在if条件判断的结构中,else if 结构可以有多个,也可以没有。else结构可以有,也可以没有。​if 条件1 then.....elseif 条件2

if

if 用于做条件判断,具体的语法结构如下,在if条件判断的结构中,else if 结构可以有多个,也可以没有。

else结构可以有,也可以没有。

​
if 条件1 then
.....
elseif 条件2 then -- 可选
.....
else -- 可选
.....
end if;

案例

create procedure p3()
begin
declare score int default 58;
declare result varchar(10);
if score >= 85 then
    set result := '优秀';
elseif score >= 60 then
    set result := '及格';
else
    set result := '不及格';
end if;
select result;
end;
call p3();

case

如果判定条件有多个,多个条件之间,可以使用 and or 进行连接。

方法一

-- 含义: 当case_value的值为 when_value1时,执行statement_list1,当值为 when_value2时,
执行statement_list2, 否则就执行 statement_list
case case_value
when when_value1 then statement_list1
[ when when_value2 then statement_list2] ...
[ else statement_list ]
end case;

方法二

-- 含义: 当条件search_condition1成立时,执行statement_list1,当条件search_condition2成
立时,执行statement_list2, 否则就执行 statement_list
case
when search_condition1 then statement_list1
[when search_condition2 then statement_list2] ...
[else statement_list]
end case;

案例

create procedure p6(in month int)
begin
declare result varchar(16);
case
	when month >= 1 and month <= 3 then
		set result := '第一季度';
	when month >= 4 and month <= 6 then
		set result := '第二季度';
	when month >= 7 and month <= 9 then
		set result := '第三季度';
	when month >= 10 and month <= 12 then
		set result := '第四季度';
	else
		set result := '非法参数';
	end case ;
	
	select concat('您输入的月份为: ',month, ', 所属的季度为: ',result);
end;
call p6(16);

while

while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的sql语句。

-- 先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑
while 条件 do
    sql逻辑...
end while;

案例

-- a. 定义局部变量, 记录累加之后的值;
-- b. 每循环一次, 就会对n进行减1 , 如果n减到0, 则退出循环
create procedure p7(in n int)
	begin
	declare total int default 0;
	while n>0 do
		set total := total + n;
		set n := n - 1;
	end while;
	select total;
	end;
call p7(100);

repeat

repeat是有条件的循环控制语句, 当满足until声明的条件的时候,则退出循环

-- 先执行一次逻辑,然后判定until条件是否满足,如果满足,则退出。如果不满足,则继续下一次循环
repeat
    sql逻辑...
    until 条件
end repeat;

案例

-- a. 定义局部变量, 记录累加之后的值;
-- b. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环
create procedure p8(in n int)
	begin
	declare total int default 0;
	repeat
		set total := total + n;
		set n := n - 1;
		until n <= 0
	end repeat;
	select total;
	end;
call p8(10);
call p8(100);

loop

loop 实现简单的循环,如果不在sql逻辑中增加退出循环的条件,可以用其来实现简单的死循环。

loop可以配合一下两个语句使用:

  • leave :配合循环使用,退出循环。
  • iterate:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。
[begin_label:] loop
    sql逻辑...
end loop [end_label];

leave label; -- 退出指定标记的循环体
iterate label; -- 直接进入下一次循环

案例

-- a. 定义局部变量, 记录累加之后的值;
-- b. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环 ----> leave xx
create procedure p9(in n int)
	begin
	declare total int default 0;
	sum:loop
		if n<=0 then
			leave sum;
		end if;
			set total := total + n;
			set n := n - 1;
	end loop sum;
	select total;
	end;
call p9(100);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com