欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > mysql有for循环吗

mysql有for循环吗

日期:2023-09-30 18:23

mysql没有for循环。MySQL是不支持for循环语句的,它支持WHILE、REPEAT和LOOP三种循环语句。WHILE循环在每次迭代开始时检查表达式;REPEAT循环语句也称为测试后循环,会在执行语句后检查表达式(expression);LOOP语句可以反复执行一个代码块。

WHILE expression DO    statements END WHILE

登录后复制

WHILE循环在每次迭代开始时检查表达式。 如果expressionevaluatesTRUE,MySQL将执行WHILEEND WHILE之间的语句,直到expressionevaluatesFALSEWHILE循环称为预先测试条件循环,因为它总是在执行前检查语句的表达式。

下面的流程图说明了WHILE循环语句:

DELIMITER $$  DROP PROCEDURE IF EXISTS test_mysql_while_loop$$  CREATE PROCEDURE test_mysql_while_loop()  BEGIN  DECLARE x  INT;  DECLARE str  VARCHAR(255);  SET x = 1;  SET str =  '';  WHILE x  <= 5 DO  SET  str = CONCAT(str,x,',');  SET  x = x + 1;   END WHILE;  SELECT str;  END$$ DELIMITER ;

登录后复制

在上面的test_mysql_while_loop存储过程中:

  • 首先,重复构建str字符串,直到x变量的值大于5
  • 然后,使用SELECT语句显示最终的字符串。

要注意,如果不初始化x变量的值,那么它默认值为NULL。 因此,WHILE循环语句中的条件始终为TRUE,并且您将有一个不确定的循环,这是不可预料的。

下面来测试test_mysql_while_loopstored调用存储过程:

CALL test_mysql_while_loop();
登录后复制

执行上面查询语句,得到以下结果 -

mysql> CALL test_mysql_while_loop();
+------------+
| str        |
+------------+
| 1,2,3,4,5, |
+------------+
1 row in set

Query OK, 0 rows affected
登录后复制

REPEAT循环

REPEAT循环语句的语法如下:

REPEAT
 statements;
UNTIL expression
END REPEAT
登录后复制

首先,MySQL执行语句,然后评估求值表达式(expression)。如果表达式(expression)的计算结果为FALSE,则MySQL将重复执行该语句,直到该表达式计算结果为TRUE

因为REPEAT循环语句在执行语句后检查表达式(expression),因此REPEAT循环语句也称为测试后循环。

下面的流程图说明了REPEAT循环语句的执行过程:

DELIMITER $$  DROP PROCEDURE IF EXISTS mysql_test_repeat_loop$$  CREATE PROCEDURE mysql_test_repeat_loop()  BEGIN  DECLARE x INT;  DECLARE str VARCHAR(255);  SET x = 1;         SET str =  '';  REPEAT  SET  str = CONCAT(str,x,',');  SET  x = x + 1;          UNTIL x  > 5         END REPEAT;         SELECT str;  END$$ DELIMITER ;

登录后复制

要注意的是UNTIL表达式中没有分号(;)。

执行上面查询语句,得到以下结果 -

mysql> CALL mysql_test_repeat_loop();
+------------+
| str        |
+------------+
| 1,2,3,4,5, |
+------------+
1 row in set

Query OK, 0 rows affected
登录后复制

LOOP,LEAVE和ITERATE语句

有两个语句允许您用于控制循环:

MySQL还有一个LOOP语句,它可以反复执行一个代码块,另外还有一个使用循环标签的灵活性。

以下是使用LOOP循环语句的示例。

CREATE PROCEDURE test_mysql_loop()
 BEGIN
 DECLARE x  INT;
        DECLARE str  VARCHAR(255);

 SET x = 1;
        SET str =  '';

 loop_label:  LOOP
 IF  x > 10 THEN 
 LEAVE  loop_label;
 END  IF;

 SET  x = x + 1;
 IF (x mod 2) THEN
     ITERATE  loop_label;
 ELSE
    SET  str = CONCAT(str,x,',');
 END IF;
    END LOOP;    
    SELECT str;
END;
登录后复制

执行上面查询语句,得到以下结果 -

mysql> CALL test_mysql_loop();
+-------------+
| str         |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set

Query OK, 0 rows affected
登录后复制

【相关推荐:mysql视频教程】

以上就是mysql有for循环吗的详细内容,更多请关注其它相关文章!

相关文章

关灯