ホームページ  >  記事  >  データベース  >  Mysqlのプロセス制御条件とループ構造

Mysqlのプロセス制御条件とループ構造

齐天大圣
齐天大圣オリジナル
2020-05-28 08:38:102420ブラウズ

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

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