ホームページ > データベース > mysql チュートリアル > mysqlにはforループがありますか?

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

青灯夜游
リリース: 2023-05-20 11:09:46
オリジナル
6641 人が閲覧しました

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## にはセミコロンがないことに注意してください。 # 表現 ( ###;###)。 上記のクエリ ステートメントを実行すると、次の結果が得られます。<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート