流程控制语句,用于将多个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;

MySQL流程控制的使用相关推荐

  1. MySQL流程控制if、case、循环结构while的使用语法

    if函数 使用规则: 执行条件判断语句1,如果返回true,则执行表达式一:如果返回false,则执行表达式二. if(判断语句1,表达式一,表达式二) case结构的使用 使用规则: 情况一:判断变 ...

  2. mysql流程控制_Mysql之流程控制结构

    顺序结构:程序从上往下依次执行 分支结构:程序从两条或多条路径中选择一条去执行 循环结构:程序在满足一定条件的基础上,重复执行一段代码 一.分支结构 1.if函数 功能:实现简单的双分支 语法: if ...

  3. mysql 控制函数库_数据库开发——MySQL——函数与流程控制

    一.函数 1.介绍 1.1.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定 ...

  4. mysql 普通sql流程控制,【mysql的编程专题①】流程控制与其他语法

    流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...

  5. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(二)

    继上文 --------------------------------------------------------------------注:如果你对python感兴趣,我这有个学习Python ...

  6. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(一)

    阅读目录 本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 一.视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可. 如果要频繁使用一张虚拟表,可以不用重复查询 视 ...

  7. 一条一条来,MySQL变量、流程控制与游标,完整详细可收藏

    文章目录 1. 变量 2. 定义条件与处理程序 3. 流程控制 4. 游标 MySQL8的新特性-全局变量的持久化 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间 ...

  8. Mysql基础篇(8)—— 变量、流程控制和游标

    变量 变量分为系统变量和用户自定义变量 系统变量 由系统定义,属于服务器层面.这些系统变量定义了当前Mysql服务实例的属性.特征.系统变量分为全局系统变量(需要加global关键字)和会话级系统变量 ...

  9. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

最新文章

  1. C#操作xml文件入门
  2. 数据库元数据数据字典查询_5_列出给定表的主键、外键约束
  3. 用 Python 告诉你!最近 24 小时内朋友圈发生了什么
  4. eclipse中anroid adk添加
  5. 50行 koa-compose,面试常考的中间件原理原来这么简单?
  6. 几个有趣的python技巧
  7. 3481. 阶乘的和
  8. 监控linux终端键盘输入,Linux内核实时监控键盘输入
  9. 解决java无法切分字符串,.split()无效
  10. Nginx中conf相关配置的简要说明
  11. Java GC机制详解
  12. 最有价值的编程忠告[转CSDN]
  13. Android项目实战(十):自定义倒计时的TextView
  14. Kisssoft软件在行星齿轮设计上的初试
  15. 计算机考研408复试题汇总
  16. Android蓝牙通讯(服务端、客户端)
  17. java.lang.NumberFormatException For input string 错误及解决办法
  18. 基于Echarts实现可视化数据大屏交通类大数据展示页面模板
  19. 人生感慨,神马都是浮云
  20. 微信怎么建群?三种方法,总有一种适合你!

热门文章

  1. 通过构造函数来创建新对象
  2. Angular2.0 基础: Form
  3. Android近场通信---NFC基础(一)(转)
  4. 提高ASP.NET应用程序性能的几招方法
  5. JSP入门 el表达式
  6. 【备忘】visual studio调试状态下显示lua调用栈
  7. 一步一步识别验证码(切分和识别)
  8. SVC和PendSV
  9. VS2017-VC++校验和计算小工具
  10. VC里的集合类、链表类、映射类