溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

While、Loop和Repeat三種循環(huán)語句有什么區(qū)別

發(fā)布時(shí)間:2021-02-01 14:32:23 來源:億速云 閱讀:952 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹While、Loop和Repeat三種循環(huán)語句有什么區(qū)別,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

相同點(diǎn):不可單獨(dú)使用,主要用于存儲(chǔ)過程和函數(shù)FUNCTION中。區(qū)別:WHILE先判斷,后執(zhí)行;滿足條件才執(zhí)行。REPEAT和LOOP先執(zhí)行,后判斷;滿足條件就結(jié)束循環(huán)。當(dāng)條件為false時(shí),REPEAT也能執(zhí)行一次;其他兩個(gè)語句無法執(zhí)行。

一、MySQL循環(huán)概述

MySQL中有三種循環(huán),分別是 WHILE , REPEAT , LOOP (據(jù)說還有 goto),不可單獨(dú)使用,主要用于 存儲(chǔ)過程 PROCEDURE 和 函數(shù) FUNCTION 中。

二、WHILE 循環(huán)

1、語法: WHILE condition DO doSomething END WHILE ;

2、說明: condition 條件滿足情況下,則執(zhí)行循環(huán)體內(nèi)容,不滿足,則結(jié)束循環(huán)。(如:2>1,滿足;1<2,不滿足。) --- 先判斷,后執(zhí)行。

3、示例: 創(chuàng)建 while 循環(huán)的存儲(chǔ)過程 pro_while

DROP PROCEDURE IF EXISTS pro_while ;
CREATE PROCEDURE pro_while()
BEGIN
	 DECLARE  sum INT DEFAULT 0 ;
	 WHILE sum < 100 DO
		INSERT INTO `chapter`.`batch` (`id`, `name`, `age`) 
		VALUES (CONCAT(sum,''),CONCAT('while',sum) , sum);
		SET sum = sum + 1;
   	END WHILE ;
END;

4、調(diào)用存儲(chǔ)過程: CALL pro_while();

相關(guān)推薦《mysql視頻教程》

三、REPEAT 循環(huán)

1、語法: REPEAT doSomething UNTIL condition END REPEAT ;

2、說明:doSomething 先執(zhí)行相關(guān)操作 ,再判斷是否滿足條件,滿足,結(jié)束循環(huán)。(和WHILE循環(huán)相反) --- 先執(zhí)行,后判斷。

3、示例:創(chuàng)建 repeat 循環(huán)的函數(shù) fun_repeat

DROP FUNCTION IF EXISTS fun_repeat ;
CREATE FUNCTION fun_repeat() RETURNS INT
BEGIN
	DECLARE  sum INT DEFAULT 1000 ;
		REPEAT 
			INSERT INTO `chapter`.`batch` (`id`, `name`, `age`) 
			VALUES (CONCAT(sum,''),CONCAT('repeat',sum) , sum);
			SET sum = sum + 1;	
		UNTIL sum > 1100 END REPEAT ; -- 滿足條件結(jié)束循環(huán)
	RETURN 1;
END;

4、執(zhí)行函數(shù): SELECT fun_repeat();

四、LOOP 循環(huán)

1、語法:

loop_name : LOOP
    IF condition THEN
        LEAVE loop_name ;
    END IF;
    doSomething
END LOOP;

2、說明:

  • loop_name 為循環(huán)名字,自定義,不可用關(guān)鍵字。

    • doSomething 執(zhí)行的相關(guān)操作。

    • condition 滿足條件,則結(jié)束循環(huán)。--- 先判斷,后執(zhí)行。

3、示例:創(chuàng)建 loop 循環(huán)的存儲(chǔ)過程 pro_loop

DROP PROCEDURE IF EXISTS pro_loop ;
CREATE PROCEDURE pro_loop()
BEGIN
	DECLARE sum int DEFAULT 10000 ;
	loop_sums : LOOP -- 【開始】loop 名字,自定義
		IF sum > 10100 THEN
			LEAVE loop_sums ; -- 滿足條件,則結(jié)束循環(huán)
		END IF; 
		INSERT INTO `chapter`.`batch` (`id`, `name`, `age`) 
		VALUES (CONCAT(sum,''),CONCAT('loop',sum) , sum);
		SET sum = sum + 1;	
	END LOOP ;  -- 【結(jié)束】
END ;

4、調(diào)用存儲(chǔ)過程: CALL pro_loop();

五、總結(jié)

1、WHILE 循環(huán),先判斷,后執(zhí)行。滿足條件,執(zhí)行,執(zhí)行循環(huán)。

2、REPEAT 循環(huán),先執(zhí)行,后判斷。滿足條件,不執(zhí)行,結(jié)束循環(huán)。

3、LOOP 循環(huán),先執(zhí)行,后判斷。滿足條件,不執(zhí)行,結(jié)束循環(huán)。

4、當(dāng)條件為false時(shí),REPEAT循環(huán)也能執(zhí)行一次,類似于 java中的 do {} while (condition); 循環(huán); 而 WHILE、LOOP 循環(huán)無法執(zhí)行。

以上是“While、Loop和Repeat三種循環(huán)語句有什么區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI