mysql沒有for迴圈。 MySQL是不支援for迴圈語句的,它支援WHILE、REPEAT和LOOP三種循環語句。 WHILE循環在每次迭代開始時檢查表達式;REPEAT循環語句也稱為測試後循環,會在執行語句後檢查表達式(expression);LOOP語句可以重複執行一個程式碼區塊。
本教學操作環境:windows10系統、mysql 8.0版本、Dell G3電腦。
MySQL提供循環語句,讓您可以根據條件重複執行一個SQL程式碼區塊。
MySQL是不支援for迴圈語句的,MySQL只支援while迴圈、repeat迴圈、loop迴圈。
MySQL提供循環語句,讓您可以根據條件重複執行一個SQL程式碼區塊。 MySQL是不支援for迴圈語句的, MySQL中有三個循環語句:WHILE
,REPEAT
和LOOP
。
我們將在以下部分中更詳細地檢查每個迴圈語句。
WHILE迴圈
WHILE
語句的語法如下:
WHILE expression DO statements END WHILE
WHILE
循環在每次迭代開始時檢查表達式。如果expressionevaluates
為TRUE
,MySQL將執行WHILE
和END WHILE
之間的語句,直到expressionevaluates
為FALSE
。 WHILE
循環稱為預先測試條件循環,因為它總是在執行前檢查語句的表達式。
下面的流程圖說明了WHILE
循環語句:
以下是在預存程序中使用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>
字串,直到
x變數的值大於
5。
要注意,如果不初始化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循環語句的執行過程:
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語句的工作原理就類似PHP,
C/C ,Java等其他語言的
break語句一樣。
語句可讓您跳過剩餘的整個程式碼並開始新的迭代。
ITERATE語句類似於
PHP,
C/C ,
Java等中的
continue語句。
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中文網其他相關文章!