MySQL の For ループ

Preet Sanghavi 2023年1月3日
MySQL の For ループ

このチュートリアルでは、MySQL で for ループを使用する方法を学習します。

for ループは通常、特定の条件をクエリするために使用されます。簡単に言うと、これらのループは、特定の事前定義された条件が満たされるまで、MySQL で実行され続けます。

設定された条件が満たされると、検討中の for ループの実行が終了します。この for ループが終了すると、コンソールに出力された、またはデータ構造に格納されたループ結果を確認できます。

このループの詳細と実装について詳しく理解しましょう。

MySQL で for ループを実行または実行するには、ストアドプロシージャを作成する必要があります。この手順は、繰り返し実行するために MySQL クエリを書き直さないようにするために、一緒に記述された MySQL ステートメントのコレクションと呼ばれることもあります。

MySQL でストアドプロシージャを作成する方法は複数あります。これについては、別のチュートリアルで詳しく説明します。MySQL の特定のデータベースで for ループのストアドプロシージャを作成する方法を理解しましょう。

ダミーデータベースを作成しましょう。このデータベースには boatdb という名前を付けることができます。これは、特定の会社に向けて出航するように設定されたさまざまなボートを指します。これは、次のクエリを使用して実行できます。

CREATE DATABASE boatdb;

これを実行すると、ディレクトリに boatdb という名前の新しいデータベースがあることがわかります。

このようなデータベースは、MySQL サーバーにまだ存在しない場合にのみ作成されます。

これで、このデータベースを使用できるようにすることで、このデータベースでクエリとプロシージャを実行できます。この新しく作成されたデータベースは、次のクエリで使用できます。

USE boatdb;

これにより、検討中の現在のデータベースが変更されます。

次に、for ループを使用してストアドプロシージャを記述します。特に、-5 から 0 までの値をコンマ区切りで出力してみましょう。

-- Start of our procedure
delimiter //

CREATE procedure boatdb.for_loop_example()
wholeblock:BEGIN
  DECLARE x INT;
  DECLARE str VARCHAR(255);
  SET x = -5;
  SET str = '';
  loop_label: LOOP
    IF x > 0 THEN
      LEAVE loop_label;
    END IF;
    SET str = CONCAT(str,x,',');
    SET x = x + 1;
    ITERATE loop_label;
  END LOOP;
  SELECT str;
END//
-- End of Procedure

上記の手順でわかるように、変数 x があり、最初は -5 に設定されています。ループ内の反復ごとに x の値を更新し、x の値をコンマで出力して隣接する値を区切ります。

プロシージャを記述して使用するように設定したら、MySQL の CALL ステートメントを使用してこのプロシージャを呼び出すことができます。それは次のように説明することができます。

call for_loop_example();

上記のステートメントでわかるように、boatdb データベースのストアドプロシージャである for_loop_example() を呼び出します。

出力:

str
-5,-4,-3,-2,-1,0,

以前に目指したように、ストアドプロシージャを使用して for ループを使用して、-5 から 0 までの値を出力します。

x の値が最初に出力されるようにループを設計したため、出力の最後にコンマがあります。次に、コンマが生成されるため、x > 0 という終了条件に基づいて、出力の最後に追加のコンマがあります。

したがって、MySQL のストアドプロシージャを使用すると、データをクエリして期待どおりに意味のある結果を生成できる for ループを効率的に作成できます。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Query

関連記事 - MySQL Loop