mysql的判断语句

2023-09-17 21:09:40

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

更多推荐

Golang并发的循环

本节中,我们会探索一些用来在并行时循环迭代的常见并发模型。我们会探究从全尺寸图片生成一些缩略图的问题。gopl.io/ch8/thumbnail包提供了ImageFile函数来帮我们拉伸图片。我们不会说明这个函数的实现,只需要从gopl.io下载它。gopl.io/ch8/thumbnailpackagethumbna

爬虫使用代理IP不会被限的原因解析

在网络爬虫的世界中,使用代理IP可以为您带来许多好处,其中之一就是能够避免被目标网站限制或封锁。本文将解析爬虫使用代理IP不会被限的原因,帮助您突破封锁,高效抓取所需数据!IP匿名性:代理IP可以隐藏爬虫程序的真实IP地址,使目标网站无法准确获取您的真实身份和位置信息。目标网站通常会根据IP地址进行访问限制或封锁,尤其

【MySQL】基础SQL语句——库的操作

文章目录一.创建数据库1.1基础语句1.2字符集和校验规则1.3校验规则对读取数据的影响二.查看数据库三.修改数据库四.删除数据库及备份4.1删除4.2备份和还原结束语一.创建数据库1.1基础语句最简洁的创建数据库的SQL语句是:createdatabasedb_name;db_name是数据库的名称创建一个数据库,本

mysql中server_id的作用

在MySQL中,server_id是一个重要的配置参数,用于唯一标识MySQL服务器实例。server_id的配置和使用在MySQL复制和高可用性(HA)方案中至关重要,因为它允许不同的MySQL服务器之间进行数据同步和复制,并确保数据的一致性。以下是关于server_id的配置和使用的一些重要信息:1.配置serve

【pyinstaller 一步步学会打包教程 】

文章目录基础语法参数必选的参数可选的参数:打包详细步骤打包多文件打包的资源路径问题基础语法此处参考官网说明:pyinstaller[options]script[script…]|specfile所以最简单的用法如下,即可打包pyinstallermyscript.py这个操作即可完成打包,会执行如下操作:Writes

【SpringMVC】JSR 303与interceptor拦截器快速入门

目录一、JSR3031、什么是JSR303?2、为什么要使用JSR303?3、JSR303常用注解3.1、常用的JSR303注解3.2、@Validated与@Valid区别3.2.1、@Validated3.2.2、@Valid3.2.3、区别4、使用案例4.1、导入依赖4.2、配置校验规则4.3、编写校验方法4.4

什么是物联网(IoT),解释物联网的架构和应用场景

1、什么是物联网(IoT),解释物联网的架构和应用场景。物联网(IoT,InternetofThings)是一种通过互联网进行连接和监控的网络,它将各种物理设备和系统集成在一起,使得数据可以远程传输和分析。物联网的应用场景非常广泛,它可以帮助人们更好地理解和管理周围的环境和事物。物联网的架构通常由三个部分组成:感知层:

后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)

后端中间件安装与启动RedisNginxNacosKafkaRedis1.打开cmd终端,进入redis文件目录2.输入redis-server.exeredis.windows.conf即可启动,不能关闭cmd窗口(端口配置方式:redis目录下的redis.windows.conf配置文件,打开文件,修改NETWO

从零开始训练大模型

Task05从零开始训练大模型目录1.预训练阶段1.1TokenizerTraining1.2LanguageModelPreTraining1.3数据集清理1.4模型效果评测2.指令微调阶段(InstructionTuningStage)2.1SelfInstruction2.2开源数据集整理2.3模型的评测方法3.

C++之容器std::queue类empty、size、front、back、push、emplace、pop、swap应用总结(二百二十四)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:C++之

【云原生】kubernetes中pod(进阶)

目录一、资源限制业务cpu内存1.1CPU资源单位1.2内存资源单位示例1示例2:二、健康检查:又称为探针(Probe)2.1探针的三种规则2.2Probe支持三种检查方法2.3示例示例1:exec方式示例3:tcpSocket方式示例4:就绪检测示例5:就绪检测2示例:启动、退出动作扩展pod的状态Container

热文推荐