Mysql のフロー制御ステートメントはほとんどの場合使用されないかもしれませんが、ストアド プロシージャを作成する必要がある場合はそれを使用します。フロー制御ステートメントを使用すると、mysql は他のプログラミング言語と同様にプログラムを作成できます。以下に条件分岐とループ本体をそれぞれ紹介します。
条件分岐
MysqlにはIFとCASEという2種類の条件分岐があります。
IF 条件
まず構文を見てみましょう:
IF CONDITION THEN 语句; [ELSEIF CONDITION THEN 语句] …… [ELSE 语句] END IF;
は php に少し似ていますが、mysql では次のようになります。ここでは「{}」がないため、mysql で END IF を使用して条件分岐を終了します。
入力値が 60 より大きいかどうかを判断する最も単純な条件分岐を作成してみましょう。 true の場合、 pass が出力されます。
BEGIN IF score >= 60 THEN SELECT 'PASS'; END IF; END
それでは、マルチブランチ構造を書いてみましょう。スコアが 90 以上の場合は PERFETCT を出力、80 以上の場合は Great を出力、70 以上の場合は Good を出力、70 以上の場合は良好を出力します。 60 に等しい場合は common を出力し、それ以外の場合は bad を出力します。
#BEGIN IF score >= 90 THEN SELECT 'PERFECT'; ELSEIF score >= 80 THEN SELECT 'GREAT'; ELSEIF score >=70 THEN SELECT 'GOOD'; ELSEIF score >= 60 THEN SELECT 'COMMON'; ELSE SELECT 'BAD'; END IF; END
#CASE 条件分岐#case 条件分岐には 2 つの構文があります。 1 つ目は PHP の IF に似ており、もう 1 つは PHP の switch-case 型に似ています。
语法1: CASE WHEN V1 THEN 语句 [WHEN V2 THEN 语句] …… [ELSE 语句] END CASE;
语法2: CASE VALUE WHEN V1 THEN 语句 [WHEN V2 THEN 语句] …… [ELSE 语句] END CASE;
構文 2 を使用して、IF と同じ関数を完成させましょう。
BEGIN CASE FLOOR(score/10) WHEN 10 THEN SELECT '优秀'; WHEN 9 THEN SELECT '优秀'; WHEN 8 THEN SELECT '良好'; WHEN 7 THEN SELECT '一般'; WHEN 6 THEN SELECT '及格'; ELSE SELECT '不及格'; END CASE; END
ループ本体Mysql にもいくつかの異なるループ本体構造があり、PHP の Break および continue に似たステートメントもあります。 。次に、これらのループとその違いを見てみましょう。
WHILEここでの while は基本的に php と同じです。彼の構文は次のとおりです。
WHILE CONDITION DO 循环体 END WHILE;
次に、1 2...100 の合計を計算する最も単純なループ本体を作成しましょう。
BEGIN DECLARE i TINYINT DEFAULT 1; DECLARE n TINYINT DEFAULT 100; DECLARE s INT DEFAULT 0; WHILE i <= n DO SET s = s + i; SET i = i + 1; END WHILE; SELECT s; END
ここでの DECLARE は、変数を定義し、デフォルトで初期値を設定することと同じです。変数の割り当てには SET コマンドが必要です。
REPEATrepeat は、PHP の do-while ループ本体に相当します。ループ本体が最初に実行され、次に条件が実行されます。判断された。その構文は次のとおりです。
REPEAT 循环体 UNTIL CONDITION END REPEAT;
以下では、REPEAT を使用して 1 2...100 の合計を計算します。
BEGIN DECLARE i TINYINT DEFAULT 1; DECLARE n TINYINT DEFAULT 100; DECLARE s INT DEFAULT 0; REPEAT SET s = s+i; SET i = i+1; UNTIL i > 100 END REPEAT; SELECT s; END
LOOP ループLOOP は、コード ブロックを繰り返し実行し、ループのラベルを設定できます。
LEAVE は php の Break ステートメントに相当します。ループがループを終了したい場合は、leave を使用してそれを達成する必要があります。さらに、ITERATE を使用して、php で continue ステートメントの機能を実装することもできます。
それでは、2 つの例を見てみましょう。
最初のステップは、100 から始まるすべての自然数の合計を計算することですが、ここで注意点があります。LOOP には CONDITION 文がないため、LEAVE を IF と組み合わせて使用する必要があります。ループから抜け出す機能。
BEGIN DECLARE i TINYINT DEFAULT 1; DECLARE n TINYINT DEFAULT 100; DECLARE s INT DEFAULT 0; l:LOOP SET s = s + i; SET i = i + 1; IF i > n THEN LEAVE l; END IF; END LOOP l; SELECT s; END
2 番目の例では、反復を使用します。 100 以内のすべての奇数の合計を計算します。
rree以上がMysqlのプロセス制御条件とループ構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。