mysql的判断语句方式

 更新时间:2025年12月12日 15:35:09   作者:无语堵上西楼  
本文详细介绍了SQL中的条件判断(if...else...elseif...)、循环控制(while、repeat、loop)以及它们的使用方法和案例,涵盖了SQL编程中的基本控制结构,对初学者和已有一定基础的开发者都具有一定的参考价值

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);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux下安装升级mysql到新版本(5.1-5.7)

    linux下安装升级mysql到新版本(5.1-5.7)

    这篇文章主要介绍了linux下安装升级mysql到新版本(5.1-5.7),需要的朋友可以参考下
    2016-03-03
  • mysql 5.7.17的最新安装教程图文详解

    mysql 5.7.17的最新安装教程图文详解

    mysql-5.7.17-winx64是现在最新版本的Mysql,这是免安装的,所以要进行些配置,下面通过本文给大家介绍mysql 5.7.17的最新安装教程图文详解,感兴趣的朋友一起学习吧
    2017-03-03
  • MySQL Limit性能优化及分页数据性能优化详解

    MySQL Limit性能优化及分页数据性能优化详解

    今天小编就为大家分享一篇关于MySQL Limit性能优化及分页数据性能优化详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 巧用mysql提示符prompt清晰管理数据库的方法

    巧用mysql提示符prompt清晰管理数据库的方法

    随着管理mysql服务器越来越多,同样的mysql>的提示符有可能会让你输入错误的命令到错误的数据库,这时候需要巧用mysql的提示符,这是我的提示符root@localhost(mysql) 08:55:21> 用prompt命令实现(适用于windows和linux环境)
    2009-08-08
  • 关于SqlServer中datediff用法

    关于SqlServer中datediff用法

    datediff是SQL SERVER里面的用法,ORACLE没有,主要作用是返回两个日期之间的时间间隔,本文通过实例代码给大家详细讲解,对datediff用法感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • MYSQL必知必会读书笔记第八章之使用通配符进行过滤

    MYSQL必知必会读书笔记第八章之使用通配符进行过滤

    这篇文章主要介绍了MYSQL必知必会读书笔记第八章之使用通配符进行过滤的相关资料,需要的朋友可以参考下
    2016-05-05
  • 在MySQL字段中使用逗号分隔符的方法分享

    在MySQL字段中使用逗号分隔符的方法分享

    大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性
    2012-06-06
  • mysql中like % %模糊查询的实现

    mysql中like % %模糊查询的实现

    这篇文章主要介绍了mysql中like % %模糊查询的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • mysql全量之增量备份与恢复方式

    mysql全量之增量备份与恢复方式

    这篇文章主要介绍了mysql全量之增量备份与恢复方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • MySQL中按照多字段排序及问题解决

    MySQL中按照多字段排序及问题解决

    这篇文章主要介绍了MySQL中按照多字段排序及问题解决的方法,非常的实用,有需要的小伙伴可以参考下。
    2015-03-03

最新评论