最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql存儲(chǔ)過(guò)程之循環(huán)語(yǔ)句(WHILE,REPEAT和LOOP)用法分析

 更新時(shí)間:2019年12月18日 09:42:36   作者:luyaran  
這篇文章主要介紹了mysql存儲(chǔ)過(guò)程之循環(huán)語(yǔ)句(WHILE,REPEAT和LOOP)用法,結(jié)合實(shí)例形式分析了mysql存儲(chǔ)過(guò)程循環(huán)語(yǔ)句WHILE,REPEAT和LOOP的原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了mysql存儲(chǔ)過(guò)程之循環(huán)語(yǔ)句(WHILE,REPEAT和LOOP)用法。分享給大家供大家參考,具體如下:

MySQL提供循環(huán)語(yǔ)句,允許我們根據(jù)條件重復(fù)執(zhí)行一個(gè)SQL代碼塊其中有三個(gè)循環(huán)語(yǔ)句:WHILE,REPEAT和LOOP,我們接下來(lái)分別看下。首先是WHILE語(yǔ)句來(lái)看下語(yǔ)法:

WHILE expression DO
  statements
END WHILE

WHILE循環(huán)在每次迭代開(kāi)始時(shí)檢查表達(dá)式。 如果expressionevaluates為T(mén)RUE,MySQL將執(zhí)行WHILE和END WHILE之間的語(yǔ)句,直到expressionevaluates為FALSE。 WHILE循環(huán)稱為預(yù)先測(cè)試條件循環(huán),因?yàn)樗偸窃趫?zhí)行前檢查語(yǔ)句的表達(dá)式。來(lái)看下流程圖:

完事咱們嘗試在存儲(chǔ)過(guò)程中使用WHILE循環(huán)語(yǔ)句,看個(gè)實(shí)例:

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存儲(chǔ)過(guò)程中,它的操作是先來(lái)重復(fù)構(gòu)建str字符串,直到x變量的值大于5,完事使用select語(yǔ)句顯示最終的字符串。我們要注意的是,如果不初始化x變量的值,那么它默認(rèn)值為NULL。 因此,WHILE循環(huán)語(yǔ)句中的條件始終為T(mén)RUE,并且我們將有一個(gè)不確定的循環(huán),這是不可預(yù)料的。廢話不多說(shuō),我們先來(lái)調(diào)用test_mysql_while_loopstored存儲(chǔ)過(guò)程:

CALL test_mysql_while_loop();

執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果:

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

完事再來(lái)看REPEAT循環(huán)語(yǔ)句的語(yǔ)法結(jié)構(gòu):

REPEAT
 statements;
UNTIL expression
END REPEAT

上述sql首先被mysql執(zhí)行,完事mysql會(huì)評(píng)估求值表達(dá)式(expression),如果表達(dá)式(expression)的計(jì)算結(jié)果為FALSE,則mysql將重復(fù)執(zhí)行該語(yǔ)句,直到該表達(dá)式計(jì)算結(jié)果為T(mén)RUE。因?yàn)镽EPEAT循環(huán)語(yǔ)句在執(zhí)行語(yǔ)句后檢查表達(dá)式(expression),因此REPEAT循環(huán)語(yǔ)句也稱為測(cè)試后循環(huán)。咱們來(lái)看下流程圖:

完事咱們?cè)賮?lái)使用REPEAT循環(huán)語(yǔ)句重寫(xiě)test_mysql_while_loop存儲(chǔ)過(guò)程:

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表達(dá)式中沒(méi)有分號(hào)(;)。執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果:

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

最后咱們?cè)賮?lái)看一個(gè)使用LOOP循環(huán)語(yǔ)句的示例:

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;

上述sql具體作用如下:

  • 以上存儲(chǔ)過(guò)程僅構(gòu)造具有偶數(shù)字符串的字符串,例如2,4,6等。
  • 在LOOP語(yǔ)句之前放置一個(gè)loop_label循環(huán)標(biāo)簽。
  • 如果x的值大于10,則由于LEAVE語(yǔ)句,循環(huán)被終止。
  • 如果x的值是一個(gè)奇數(shù),ITERATE語(yǔ)句忽略它下面的所有內(nèi)容,并開(kāi)始一個(gè)新的迭代。
  • 如果x的值是偶數(shù),則ELSE語(yǔ)句中的塊將使用偶數(shù)構(gòu)建字符串。

執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果:

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

完事咱們?cè)賮?lái)看下控制循環(huán)的兩個(gè)關(guān)鍵詞:

  • LEAVE語(yǔ)句用于立即退出循環(huán),而無(wú)需等待檢查條件。LEAVE語(yǔ)句的工作原理就類似PHP,C/C++,java等其他語(yǔ)言的break語(yǔ)句一樣。
  • ITERATE語(yǔ)句允許您跳過(guò)剩下的整個(gè)代碼并開(kāi)始新的迭代。ITERATE語(yǔ)句類似于PHP,C/C++,Java等中的continue語(yǔ)句。

好啦,本次記錄就到這里了。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

相關(guān)文章

  • Mysql Data目錄和 Binlog 目錄 搬遷的方法

    Mysql Data目錄和 Binlog 目錄 搬遷的方法

    剛開(kāi)始安裝時(shí)使用了默認(rèn)目錄,使用一段時(shí)間,數(shù)據(jù)慢慢變?cè)?,發(fā)現(xiàn)當(dāng)前設(shè)置的目錄空間不夠時(shí),就要搬遷數(shù)據(jù)到另一個(gè)目錄了
    2011-10-10
  • MySQL三表聯(lián)合查詢操作舉例

    MySQL三表聯(lián)合查詢操作舉例

    在mysql查詢語(yǔ)句中,為了實(shí)現(xiàn)查詢到某些信息,我們會(huì)用到多表的聯(lián)合查詢,下面這篇文章主要給大家介紹了關(guān)于MySQL三表聯(lián)合查詢操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • mybatis分頁(yè)插件pageHelper詳解及簡(jiǎn)單實(shí)例

    mybatis分頁(yè)插件pageHelper詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了mybatis分頁(yè)插件pageHelper詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • MySQL全局鎖和表鎖的深入理解

    MySQL全局鎖和表鎖的深入理解

    這篇文章主要給大家介紹了關(guān)于MySQL全局鎖和表鎖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • MySql如何按照日期進(jìn)行分組統(tǒng)計(jì)

    MySql如何按照日期進(jìn)行分組統(tǒng)計(jì)

    這篇文章主要介紹了MySql如何按照日期進(jìn)行分組統(tǒng)計(jì)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解

    MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解

    這篇文章主要介紹了 MySQL timestamp的類型與時(shí)區(qū)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • mysql如何比對(duì)兩個(gè)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的方法

    mysql如何比對(duì)兩個(gè)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的方法

    這篇文章主要介紹了mysql如何比對(duì)兩個(gè)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • MySQL數(shù)據(jù)庫(kù)完全備份與增量備份詳解

    MySQL數(shù)據(jù)庫(kù)完全備份與增量備份詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)完全備份與增量備份詳解,完全備份就是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)及所有對(duì)象全部備份,具體詳細(xì)內(nèi)容需要的朋友可以參考一下
    2022-08-08
  • MySQL慢查詢現(xiàn)象解決案例

    MySQL慢查詢現(xiàn)象解決案例

    這篇文章主要介紹了MySQL慢查詢現(xiàn)象解決案例,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-08-08
  • mysql中異常錯(cuò)誤ERROR:2002的解決方法

    mysql中異常錯(cuò)誤ERROR:2002的解決方法

    最近在啟動(dòng)mysql的時(shí)候發(fā)現(xiàn)mysql報(bào)錯(cuò)了,錯(cuò)誤代碼是2002,通過(guò)查找相關(guān)的資料發(fā)現(xiàn)是var/lib/mysql 的訪問(wèn)權(quán)限問(wèn)題,所以這篇文章主要介紹了mysql中異常錯(cuò)誤ERROR:2002的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-03-03

最新評(píng)論

合水县| 商水县| 无棣县| 兴文县| 宾阳县| 玛沁县| 瑞丽市| 满城县| 曲松县| 方正县| 平昌县| 台南市| 永城市| 德庆县| 兴海县| 阿拉善盟| 怀宁县| 宿松县| 定远县| 桂林市| 宁强县| 鄂尔多斯市| 凉城县| 方正县| 峨边| 普安县| 广河县| 新竹县| 德州市| 香河县| 措勤县| 郁南县| 新河县| 汝城县| 怀化市| 宣武区| 新巴尔虎左旗| 漳平市| 石阡县| 南通市| 仙桃市|