mysql 普通sql流程控制_MySQL流程控制的使用

流程控制语句,用于将多个SQL语句,划分或组成成符合业务逻辑的代码块

流程控制语句

包括,IF语句、CASE语句、LOOP语句、WHILE语句、LEAVE语句、ITERATE语句、REPEAT语句和WHILE语句

每个流程中,可能包含一个单独语句,也可以是使用BEGIN……END构造的复合语句,可以嵌套

IF语句

IF语句,是指如果满足某种条件,根据判断的结果为TRUE,或者FALSE执行相应的语句

语法格式

IF expr_condition THEN statement_list

[ELSEIF expr_condition THEN statement_list]

[ELSE statement_list]

END IF

IF实现了一个基本的条件构造

参数说明

Expr_condition,表示判断条件

Statement_list,表示SQL语句列表,它可以包括一个或多个语句

如果,expr_condition求值为TRUE,相应的SQL语句列表就会被执行,如果,没有expr_condition匹配,则ELSE子句李的语句列表被执行

注意,MySQL中还有一个IF()函数,不同于这里的IF语句

IF val IS NULL

THEN SELECT ‘val is NULL’;

ELSE SELECT ‘val is not NULL’;

END IF;

判断val值是否为空

如果,val值为空,输出字符串val is NULL,否则,输出字符串val is not NULL

注意,IF语句都需要使用END IF来结束,不可省略

CASE语句

另一个进行条件判断的语句,该语句有两种语句格式

第一种格式

CASE case_expr

WHEN when_value THEN statement_list

[WHEN when_value THEN statement_list]……

[ELSE statement_list]

END CASE

参数说明

Case_expr,表示条件判断的表达式,决定了哪一个WHEN自己会被执行

When_value,表示表达式可能的值,如果,某个when_value表达式与case_expr表达式结果相同,则执行对应THEN关键字后的statement中的语句

Statement_list,表示不同when_value值的执行语句

使用CASE流程控制语句,第一种格式,判断val值等于1、等于2,或者两者都不等于

CASE val

WHEN 1 THEN SELECT ‘val is 1’;

WHEN 2 THEN SELECT ‘val is 2’;

ELSE SELECT ‘val is not 1 or 2’;

END CASE;

当val值为1时,输出字符串val is 1

当val值为2时,输出字符串val is 2

否则,输出字符串val is not 1 or 2

第二种格式

CASE

WHEN expr_condition THEN statement_list

[WHEN expr_condition THEN statement_list]

[ELSE statement_list]

END CASE;

注意,这里存储过程中的CASE语句,与控制流程函数中的SQL CASE表达式中的CASE是不同的

存储过程中,CASE语句不能有ELSE NULL子句,并且,用END CASE代替END来终止

LOOP语句

LOOP循环语句,用来重复执行某些语句

与IF和CASE语句相比,LOOP只是创建一个循环操作的过程,并不进行条件判断

LOOP内的语句一直重复执行,知道跳出循环语句

语法格式

[loop_label:] LOOP

Statement_list

END LOOP [loop_label]

参数说明

Loop_label,表示LOOP语句的标注名称,该参数可以省略

Statement,表示需要循环执行的语句

使用LOOP 语句进行循环操作

DECLARE id INT DEFAULT 0;

Add_loop:LOOP

SET id=id+1;

IF id>=10 THEN LEAVE add_loop;

END IF;

END LOOP add_loop;

循环执行了id加1的操作

当id值小于10时,循环重复执行,当id值大于或者等于10时,使用LEAVE语句退出循环

LEAVE语句

用于退出任何被标注的流程控制结构

语法格式

LEAVE label

参数说明

label,表示循环的标志

通常情况下,LEAVE语句与BEGIN……END、循环语句一起使用

ITERATE,意思是再次循环

ITERATE语句

用于将执行顺序转到语句段的开头处

语法格式

ITERATE lable

参数说明

Lable,表示循环的标志

注意,ITERATE语句只可以出现在,LOOP、REPEAT和WHILE语句中

演示ITERATE语句,在LOOP语句内的使用

CREATE PROCEDURE doiterate()

BEGIN

DECLARE p1 INT DEFAULT 0;

My_loop:LOOP

SET p1=p1+1;

IF p1<10 THEN ITERATE my_loop;

ELSEIF p1>20 THEN LEAVE my_loop;

END IF;

SELECT ‘p1 is between 10 and 20’;

END LOOP my_loop;

END

P1的初始值为0,如果,p1的值小于10时,重复执行p1加1的操作,当p1大于或等于10,并且小于20时,打印消息p1 is between 10 and 20,当p1大于20时,退出循环

REPEAT语句

用于创建一个带有条件判断的循环过程

每次语句执行完毕之后,会对条件表达式进行判断,如果表达式为真,则循环结束,否则,重复执行循环中的语句

语法格式

[repeat_lable:] REPEAT

Statement_list

UNTIL expr_condition

END REPEAT [repeat_lable]

参数说明

Repeat_lable,为REPEAT语句的标注名称,该参数是可选的

REPEAT语句内的语句,或语句群被重复,直至expr_condition为真

使用REPEAT语句,执行循环过程

DECLARE id INT DEFAULT 0;

REPEAT

SET id=id+1;

UNTIL id>=10;

END REPEAT;

WHILE语句

创建一个带条件判断的循环过程

与REPEAT不同的是,WHILE在语句执行时,先对指定的条件进行判断,如果为真,则执行循环内的语句,否则退出循环

语法格式

[while_lable:] WHILE expr_condition DO

Statement_list

END WHILE [while_lable]

参数说明

While_lable,为WHILE语句的标注名称

Expr_condition,为进行判断的表达式,如果表达式为真,WHILE语句内的语句,或语句群就被执行,直至expr_condition为假,退出循环

使用WHILE语句,进行循环操作

DECLARE i INT DEFAULT 0;

WHILE i<10 DO

SET i=i+1;

END WHILE;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值