ホームページ  >  記事  >  データベース  >  mysqlにはforループがありますか?

mysqlにはforループがありますか?

青灯夜游
青灯夜游オリジナル
2023-03-30 20:26:316587ブラウズ

Mysql には for ループがありません。 MySQL は for ループ ステートメントをサポートしていませんが、WHILE、REPEAT、LOOP の 3 つのループ ステートメントをサポートしています。 WHILE ループは各反復の開始時に式をチェックし、ポストテスト ループとも呼ばれる REPEAT ループ ステートメントはステートメントの実行後に式をチェックします。LOOP ステートメントはコード ブロックを繰り返し実行できます。

mysqlにはforループがありますか?

このチュートリアルの動作環境: Windows10 システム、mysql バージョン 8.0、Dell G3 コンピューター。

mysql のループ ステートメント

MySQL には、条件に基づいて SQL コードのブロックを繰り返し実行できるループ ステートメントが用意されています。

MySQL は for ループ ステートメントをサポートしていません .MySQL は while ループ、repeat ループ、loop ループのみをサポートします。

MySQL には、条件に基づいて SQL コードのブロックを繰り返し実行できるループ ステートメントが用意されています。 MySQL は for ループ ステートメントをサポートしていません。MySQL には、WHILEREPEATLOOP という 3 つのループ ステートメントがあります。

次のセクションで、各ループ ステートメントを詳しく調べます。

#WHILE ループ

WHILEステートメントの構文は次のとおりです:

WHILE expression DO
   statements
END WHILE

WHILEループは、各反復の開始時に式をチェックします。 expressionevaluatesTRUE の場合、MySQL は expressionevaluates が ## になるまで、WHILEEND WHILE の間のステートメントを実行します。 #間違い###。 WHILEこのループは、ステートメントを実行する前に常にステートメントの式をチェックするため、プレテスト条件付きループと呼ばれます。 以下のフローチャートは、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><p><code>まず、</code>str</p> 文字列を繰り返し構築します。 #xx
    変数の値が
  • 5 より大きくなるまで。 次に、SELECT ステートメントを使用して、最終的な文字列を表示します。
  • 変数の値が初期化されていない場合、デフォルト値は
  • 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 Loop

REPEAT

ループ ステートメントの構文は次のとおりです。

REPEAT
 statements;
UNTIL expression
END REPEAT
まず、MySQL はステートメントを実行し、その評価を評価します。式 (式 )。式 (

expression

) が FALSE と評価される場合、MySQL は式が

TRUE

と評価されるまでステートメントを繰り返し実行します。 REPEAT ループ ステートメントはステートメントの実行後に式 (expression) をチェックするため、REPEAT ループ ステートメントはポストステートメントとも呼ばれます。テストループ。

次のフローチャートは、REPEAT ループ ステートメントの実行プロセスを示しています。

REPEAT## を使用できます。 # ループ ステートメントは、WHILE ループ ステートメントを使用して、

test_mysql_while_loop

ストアド プロシージャを書き換えます。 mysqlにはforループがありますか?

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## にはセミコロンがないことに注意してください。 # 表現 ( ###;###)。 上記のクエリ ステートメントを実行すると、次の結果が得られます。<pre class="brush:php;toolbar:false">mysql&gt; CALL mysql_test_repeat_loop(); +------------+ | str        | +------------+ | 1,2,3,4,5, | +------------+ 1 row in set Query OK, 0 rows affected</pre>LOOP、LEAVE、および ITERATE ステートメント

2 つのステートメントを使用してループを制御できます。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。