首頁 >資料庫 >mysql教程 >mysql有for循環嗎

mysql有for循環嗎

青灯夜游
青灯夜游原創
2023-03-30 20:26:316633瀏覽

mysql沒有for迴圈。 MySQL是不支援for迴圈語句的,它支援WHILE、REPEAT和LOOP三種循環語句。 WHILE循環在每次迭代開始時檢查表達式;REPEAT循環語句也稱為測試後循環,會在執行語句後檢查表達式(expression);LOOP語句可以重複執行一個程式碼區塊。

mysql有for循環嗎

本教學操作環境:windows10系統、mysql 8.0版本、Dell G3電腦。

mysql中的循環語句

MySQL提供循環語句,讓您可以根據條件重複執行一個SQL程式碼區塊。 

MySQL是不支援for迴圈語句的,MySQL只支援while迴圈、repeat迴圈、loop迴圈。

MySQL提供循環語句,讓您可以根據條件重複執行一個SQL程式碼區塊。 MySQL是不支援for迴圈語句的, MySQL中有三個循環語句:WHILEREPEATLOOP

我們將在以下部分中更詳細地檢查每個迴圈語句。

WHILE迴圈

WHILE語句的語法如下:

WHILE expression DO
   statements
END WHILE

WHILE循環在每次迭代開始時檢查表達式。如果expressionevaluatesTRUE,MySQL將執行WHILEEND WHILE之間的語句,直到expressionevaluatesFALSEWHILE循環稱為預先測試條件循環,因為它總是在執行前檢查語句的表達式。

下面的流程圖說明了WHILE循環語句:

mysql有for循環嗎

以下是在預存程序中使用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  <p>在上面的<code>test_mysql_while_loop</code>預存程序中:</p>
    ##首先,重複建置
  • 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循環語句的執行過程:

mysql有for循環嗎

我們可以使用

REPEAT循環語句重寫test_mysql_while_loop預存過程,使用WHILE循環語句:

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語句

有兩個語句允許您用於控制循環:

  • LEAVE語句用於立即退出循環,而無需等待檢查條件。 LEAVE語句的工作原理就類似PHP,C/C ,Java等其他語言的break語句一樣。
  • ITERATE語句可讓您跳過剩餘的整個程式碼並開始新的迭代。 ITERATE語句類似於PHPC/C Java等中的continue語句。
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;
  • 以上存储过程仅构造具有偶数字符串的字符串,例如2,4,6等。
  • LOOP语句之前放置一个loop_label循环标签。
  • 如果x的值大于10,则由于LEAVE语句,循环被终止。
  • 如果x的值是一个奇数,ITERATE语句忽略它下面的所有内容,并开始一个新的迭代。
  • 如果x的值是偶数,则ELSE语句中的块将使用偶数构建字符串。

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

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

Query OK, 0 rows affected

【相关推荐:mysql视频教程

以上是mysql有for循環嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:mysql有數組嗎下一篇:mysql有數組嗎