相同點:不可單獨使用,主要用于存儲過程和函數function中。區別:while先判斷,后執行;滿足條件才執行。REPEAT和LOOP先執行,后判斷;滿足條件就結束循環。當條件為false時,REPEAT也能執行一次;其他兩個語句無法執行。
本教程操作環境:windows7系統、mysql8版、Dell G3電腦。
一、mysql循環概述
MySQL中有三種循環,分別是 WHILE , REPEAT , LOOP (據說還有 goto),不可單獨使用,主要用于 存儲過程 PROCEDURE 和 函數 FUNCTION 中。
二、WHILE 循環
1、語法: WHILE condition DO doSomething END WHILE ;
2、說明: condition 條件滿足情況下,則執行循環體內容,不滿足,則結束循環。(如:2>1,滿足;1— 先判斷,后執行。
3、示例: 創建 while 循環的存儲過程 pro_while
DROP?PROCEDURE?IF?EXISTS?pro_while?; CREATE?PROCEDURE?pro_while() BEGIN ?DECLARE??sum?INT?DEFAULT?0?; ?WHILE?sum?<p style="text-indent:33px;">4、調用存儲過程: <strong><span style="text-decoration:underline;">CALL pro_while();</span></strong></p><p>相關推薦《<a href="https://www.php.cn/course/list/51.html" target="_blank">mysql視頻教程</a>》</p><p><strong>三、REPEAT 循環</strong></p><p style="text-indent:33px;">1、語法: REPEAT <span style="color:#ffbb66;">doSomething</span> UNTIL <span style="color:#ffbb66;">condition</span> END REPEAT ;</p><p style="text-indent:33px;">2、說明:doSomething 先執行相關操作 ,再判斷是否滿足條件,滿足,結束循環。(和WHILE循環相反) <strong>--- 先執行,后判斷。</strong></p><p style="text-indent:33px;">3、示例:創建 repeat 循環的函數 <span style="text-decoration:underline;">fun_repeat</span></p><pre class="brush:sql;toolbar:false;">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?;?--?滿足條件結束循環 RETURN?1; END;
4、執行函數: select fun_repeat();
四、LOOP 循環
1、語法:
loop_name?:?LOOP ????IF?condition?THEN ????????LEAVE?loop_name?; ????END?IF; ????doSomething END?LOOP;
2、說明:
- loop_name 為循環名字,自定義,不可用關鍵字。
- doSomething 執行的相關操作。
- condition 滿足條件,則結束循環。— 先判斷,后執行。
3、示例:創建 loop 循環的存儲過程 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?;?--?滿足條件,則結束循環 END?IF;? INSERT?INTO?`chapter`.`batch`?(`id`,?`name`,?`age`)? VALUES?(CONCAT(sum,''),CONCAT('loop',sum)?,?sum); SET?sum?=?sum?+?1; END?LOOP?;??--?【結束】 END?;
4、調用存儲過程: CALL pro_loop();
五、總結
1、WHILE 循環,先判斷,后執行。滿足條件,執行,執行循環。
2、REPEAT 循環,先執行,后判斷。滿足條件,不執行,結束循環。
3、LOOP 循環,先執行,后判斷。滿足條件,不執行,結束循環。
4、當條件為false時,REPEAT循環也能執行一次,類似于 Java中的 do {} while (condition); 循環; 而 WHILE、LOOP 循環無法執行。
更多計算機編程相關知識,請訪問:mysql視頻教程!!