引言
MySQL 中的流程控制作为基础知识的最后一块拼图,显得并不是特别重要,而且,在实际生产开发中,也往往不需要通过它来进行程序的控制,那么为什么还要学习它呢?我认为有以下几点:
1、知识的完整性:虽然MySQL 的流程控制结构并不重要,但是作为MySQL 基础知识的一部分,我认为有必要将它补充完善,最起码也要掌握其基本语法和结构,不至于到了真正用的时候临时抱佛脚。
2、任何知识都有其应用价值:虽然MySQL 的流程控制并不重要,但是知识的魅力就是,你不知道它什么时候就会用得上,所以为了有所准备,还是应该适当了解一下这部分内容。
3、给MySQL基础知识画个圆满的句号:MySQL基础系列一路走下来,可谓收获不少,虽然我敢肯定MySQL的知识内涵还远不止如此,但作为一个后端开发人员,能够将这一系列的总结掌握透彻,在实际开发中有所运用也基本算是一个优秀的开发者了。那么本篇流程控制结构的总结,不仅是要为基础知识画上句号,同时也是开启 MySQL 高级系列的起承转合之章。
一、分支结构
1.1 IF() 函数
功能:实现简单的双分支。
语法:IF(表达式1,表达式2,表达式3)
解析:IF() 函数很好理解,和Java 中的三目运算符完全一样,都是先判断第一表达式是否为 true,如果是,则执行表达式2的语句,如果是false,则执行表达式3 的语句。它可以应用与MySQL 中的任何地方,包括存储过程和函数中。
1.2 CASE 结构
功能:实现多分支。
语法:
CASE 变量 | 表达式 | 字段WHEN 值1或表达式1 THEN 返回值1 [或语句1;]WHEN 值2或表达式2 THEN 返回值2 [或语句2;]...ELSE 其他情况返回值 [或语句;]END [CASE;]
解析:case 结构可以实现类似 Java 的switch 语句的等值判断,也可以实现类似 if...else if 的区间判断。它既可以嵌套在其他语句中,同时也可以作为独立的语句执行。BEGIN-END内外都可以使用。
1.3 IF 结构
IF 结构可以实现多分支结构,但只能用于 BEGIN-END 中。
语法:
IF 条件1 THEN 语句1;
ELSEIF 条件2 THEN 语句2;
...
ELSE 语句n;
END IF;
二、循环结构
MySQL 中的循环结构分为三类:
WHILE、LOOP、REPEAT
另外还有一些循环控制符:
ITERATE:类似于 Java 中的 continue,用于结束本次循环,继续下一次。
LEAVE : 类似于 Java 中的 break,用于结束循环。
WHILE 循环语法:
[标签:] WHILE 循环条件 DO循环体;
END WHILE [标签];
标签可以省略,但如果希望使用 LEAVE 等流程控制语句,则必须指定标签。
LOOP语法和 WHILE 类似,只是把 WHILE 关键字换成了 LOOP,可以用LOOP 模拟一些简单的死循环。
REPEAT 循环语法:
[标签:] REPEAT循环体;
UNTIL 结束循环的条件
END REPEAT [标签];