mysql流程控制语句包含哪些?
mysql中的流程操纵语句包罗有:IF语句、CASE语句、LOOP语句、WHILE语句、REPEAT语句、LEAVE语句和ITERATE语句,它们都可以来操纵程序的流程。
在储备历程和自定义函数中可以使用流程操纵语句来操纵程序的流程。MySQL 中流程操纵语句有::IF语句、CASE语句、LOOP语句、WHILE语句、REPEAT语句、LEAVE语句和ITERATE语句,它们可以停止流程操纵。(引荐教程:mysql视频教程)
1、IF语句
IF语句用来停止前提推断,按照不一样的前提施行不一样的操纵。该语句在施行时第一推断IF后的前提可否为真,则施行THEN后的语句,假如为假则连续推断IF语句直到为真为止,当以上都不知足时则施行ELSE语句后的内容。IF语句表示情势如下:
IF condition THEN ... ELSE condition THEN ... ELSE ... END IF
示例:使用IF语句用来停止前提推断。
-- 创立储备历程 CREATE PROCEDURE example_if (IN x INT) BEGIN IF x = 1 THEN SELECT 1; ELSEIF x = 2 THEN SELECT 2; ELSE SELECT 3; END IF; END; -- 调取储备历程 CALL example_if(2);
留意:MySQL 中的 IF( ) 函数不一样于这里的 IF 语句。
2、CASE语句
CASE语句为多分支语句构造,该语句第一从WHEN后的VALUE中查寻与CASE后的VALUE相等的值,假如查寻到则施行该分支的内容,不然施行ELSE后的内容。CASE语句表示情势如下:
CASE value WHEN value THEN ... WHEN value THEN ... ELSE ... END CASE
CASE语句另一种语法表示情势如下:
CASE WHEN value THEN ... WHEN value THEN ... ELSE ... END CASE
示例:使用CASE语句用来停止前提推断。
-- 创立储备历程 CREATE PROCEDURE example_case(IN x INT) BEGIN CASE x WHEN 1 THEN SELECT 1; WHEN 2 THEN SELECT 2; ELSE SELECT 3; END CASE; END; -- 调取储备历程 CALL example_case(5);
3、WHILE轮回语句
WHILE轮回语句施行时第一推断condition前提可否为真,假如是则施行轮回体,不然退出轮回。该语法表示情势如下:
WHILE condition DO ... END WHILE;
示例:使用WHILE轮回语句施行求前100的和。
-- 创立储备历程 CREATE PROCEDURE example_while(OUT sum INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE s INT DEFAULT 0; WHILE i <= 100 DO SET s = s+i; SET i = i+1; END WHILE; SET sum = s; END; -- 调取储备历程 CALL example_while(@sum); SELECT @sum;
4、LOOP轮回语句
LOOP轮回没有内置的轮回前提,但可以通过LEAVE语句退出轮回。LOOP语句表示情势如下:
LOOP ... END LOOP
LOOP语句同意某特定语句或语句群的反复施行,实现一个简便的轮回结构,在轮回内的语句不断反复直至轮回被退出,退出轮回利用LEAVE语句。
LEAVE语句经常和BEGIN...END或者轮回一起使用,其表示情势如下:
LEAVE label
label是语句中标注的名字,这个名字是自定义的。
示例:使用LOOP轮回语句求前100的和。
-- 创立储备历程 CREATE PROCEDURE example_loop(OUT sum INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE s INT DEFAULT 0; loop_label:LOOP SET s = s+i; SET i = i+1; IF i>100 THEN -- 退出LOOP轮回 LEAVE loop_label; END IF; END LOOP; SET sum = s; END; -- 调取储备历程 CALL example_loop(@sum); SELECT @sum;
5、REPEAT轮回语句
REPEAT轮回语句先施行一次轮回体,之后推断condition前提可否为真,则退出轮回,不然连续施行轮回。REPEAT语句表示情势如下:
REPEAT ... UNTIL condition END REPEAT
示例:使用REPEAT轮回语句求前100的和。
-- 创立储备历程 CREATE PROCEDURE example_repeat(OUT sum INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE s INT DEFAULT 0; REPEAT SET s = s+i; SET i = i+1; UNTIL i > 100 END REPEAT; SET sum = s; END; -- 调取储备历程 CALL example_repeat(@sum); SELECT @sum;
6、ITERATE语句
ITERATE语句可以显现在LOOP、REPEAT和WHILE语句内,其意为“再次轮回”。语句格局如下:
ITERATE label
该语句的格局与LEAVE大同小异,不同在于:LEAVE语句是分开一个轮回,而ITERATE语句是从新开端一个轮回。
示例:求10之内奇数值的和。
-- 创立储备历程 CREATE PROCEDURE example_iterate(OUT sum INT) BEGIN DECLARE i INT DEFAULT 0; DECLARE s INT DEFAULT 0; loop_label:LOOP SET i = i+1; IF i > 10 THEN -- 退出整个轮回 LEAVE loop_label; END IF; IF (i mod 2) THEN SET s = s+i; ELSE -- 退出本次轮回,连续下一个轮回 ITERATE loop_label; END IF; END LOOP; SET sum = s; END; -- 调取储备历程 CALL example_iterate(@sum); SELECT @sum