MySQL コード実行構造例の分析 [シーケンス、分岐、ループ構造]

MySQL コード実行構造例の分析 [シーケンス、分岐、ループ構造]

この記事では、例を使用して MySQL コード実行構造について説明します。ご参考までに、詳細は以下の通りです。

この記事の内容:

  • コード実行構造とは何ですか?
  • シーケンス構造
  • 支店構造
  • ループ構造

リリース日: 2018-04-18


コード実行構造は何ですか?

  • ここで言うコード実行構造とは、複数の SQL 文の実行順序のことです。
  • コード実行構造は主に、トリガー、ストアド プロシージャ、および関数に複数の SQL ステートメントを格納するために使用されます。

順次構造:

  • シーケンシャル構造はSQL文を上から下へ実行するものである
  • 一般的に、デフォルトの構造はシーケンスである

支店構造:

  • ブランチ構造の実行は、特定の条件に基づいて実行パスを選択することです。指定した条件に基づいて、それらの SQL ステートメントを実行することを選択します。
  • MySQL のブランチ構造は if-else のみです。
    • 文法:
      条件が
       SQL文[elseif条件then
       SQL文]
      [それ以外
       SQL文]
      終了の場合;
    • 例:
      -- 
      テーブルを作成します pass(id int primary key auto_increment,name varchar(15),score int );
      テーブル unpass(id int primary key auto_increment,name varchar(15),score int) を作成します。
      
      -- ストアド プロシージャを使用して、プロシージャ myif(in name varchar(15),in score int) を作成します。
      始める
       スコアが60以上の場合
        pass(name,score) に values(name,score) を挿入します。
       それ以外
        unpass(name,score) に値(name,score) を挿入します。
       終了の場合;
      終わり;
      -- 呼び出して結果を表示します call myif("lilei",61);
      myif("hanmeimei",95) を呼び出します。
      パスから*を選択します。
      unpass から * を選択します。
      myif("tuhao",59) を呼び出します。
      unpass から * を選択します。
    • if 内の条件は、基本的に select ステートメントの while 句の条件を参照できます。 in\not in \= \!= など何でも使えます。
      プロシージャ myif3(char(1) 内) を作成する
      始める
       もしaが('a','b')ならば
        1を選択;
       それ以外 
        2を選択;
       終了の場合;
      終わり;
      myif3('a') を呼び出します。
      myif3('b') を呼び出します。
      myif3('c') を呼び出します。

補充:

  • 理論上は、判定が正しくなく、実行を継続したくない場合は return (関数実行を中断する C 言語の return など) を実行する必要がありますが、MySQL には対応する中断メカニズムがないため、積極的に中断する必要があります (構文に準拠しているが実行できないステートメントを実行するなど、中断する方法はたくさんあります) [このシナリオは、たとえば、学生が存在するかどうかを判断します。存在しない場合は操作が実行されないため、正常に実行できないステートメントを実行してエラーを報告し、 return する必要があります。 】
  • 実は、もう一つの分岐構造があります。それは、[多くの本ではあまり触れられていないようなので、ここでは触れません。興味があればBaiduで検索してみてください。 】

ループ構造:

    • ループ構造とは、プログラム内の特定の機能を繰り返し実行するために設定されたプログラム構造を指します。 MySQL のループ構造は、同じ SQL ステートメントをループして複数回実行するために使用されます。
    • MySQL のループ構造には、loop 構造、while 構造、repeat 構造があります。ここでは while 構造についてのみ説明します。他の構造について知りたい場合は、Baidu で検索してください。
    • 文法:
条件が満たされる間
 SQL ステートメントの終了 while;
        他の言語を学んだことがある人は、ループ構造の中に continue(ループを早く終了する)と break(ループ全体から抜け出す)があることをご存知かもしれません。
        MySQL のループ構造では、break の代わりに leave が使用され、continue の代わりに iterate が使用されますが、それらの使用構文は、leave\iterate ループ名です。では、ループ名をどのように定義すればよいのでしょうか?
ループ名: while condition do
 SQL ステートメント;
 leave_iterate ループ名;
終了しながら;
  • 例:
    -- 意味のない例ですが、デモンストレーション用です。create table whilenum(id int);
    -- 組み込み条件付きのプロシージャ mywhile() を作成する
    始める
     num int を宣言します。
     num=10 を設定します。
     c1:num>0の間
       whilenum values(num) に挿入します。
       num=num-1 を設定します。
      終了しながら;
    終わり;
    -- 渡されたパラメータを条件としてプロシージャ mywhile2(in num int) を作成します。
    始める
     c1:num>0の間
       whilenum values(num) に挿入します。
       num=num-1 を設定します。
      終了しながら;
    終わり;
    -- 割り込み付きのプロシージャ mywhile3(in num int) を作成する
    始める
     c1:num>0の間
       num%2=0の場合
        num=num-1 を設定します。
        c1 を反復します。
       終了の場合;
       whilenum values(num) に挿入します。
       num=num-1 を設定します。
      終了しながら;
    終わり;

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL ステートメントの実行順序と書き込み順序の例の分析
  • MySQLステートメントの記述と実行順序を理解するだけです
  • MySQL SELECT実行順序の簡単な理解
  • MySQLにおけるSQLの実行順序についてのちょっとした質問
  • SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)
  • SQL と MySQL のステートメント実行順序の分析
  • MySQLの実行プロセスとシーケンスについての簡単な説明

<<:  DockerでJavaプログラムを起動する方法

>>:  Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

推薦する

モバイルレイアウト用の動的REMの実装

ダイナミックレム1. まず、現在の長さの単位を紹介しましょうpx em Mの幅 / 漢字の幅 1em...

Vue が配列の変更を監視できない問題の解決方法

目次1. Vueリスナー配列2. vueが配列の変更を監視できない状況1. Vueリスナー配列Vue...

Vueでデータを読み取るためにこれを悪用しないでください

目次序文1. これを使用してデータ内のデータを読み取るプロセス2. Dep.target はいつ存在...

MySQLは変数を使用してさまざまなソートを実装します

コアコード -- 以下では、MySQLでのソート列の実装を示します -- テストデータ CREATE...

データベースインデックスの知識ポイントの概要

目次ファーストルックインデックスインデックスの概念インデックスファイルの構成インデックスの役割SQL...

Linuxでのaliasコマンドの使い方の詳細な説明

1. 別名の使用alias コマンドは、コマンドのエイリアスを設定するために使用されます。このコマン...

コード分​​析を実現するためのFastDFSとNginxの統合

FastDFSとNginxの統合:トラッカーは、負荷分散と高可用性のために Nginx と組み合わせ...

Vue.jsはElement-uiを使用してナビゲーションメニューを実装します

この記事では、Element-uiを使用してvue.jsでナビゲーションメニューを実装するための具体...

1 つの記事で Nginx ロケーション マッチングの実装を理解する

チームはフロントエンドとバックエンドを分離しているため、フロントエンドが Nginx とノード層を引...

Dockerコンテナの自動終了を停止する方法の詳細な説明

この記事では、Docker コンテナとフロントエンド プロセスの関係と、コンテナを永続的に実行できる...

Vueの計算プロパティの詳細な説明

1. 計算属性とは何ですか? 簡単に言えば、計算された結果が属性に保存されるもので、キャッシュとして...

Centos7環境でYUMを構築する方法

1. yumソースの設定ファイルを入力します 2.lsで設定ファイルを表示する 3. ディレクトリを...

Tencent Cloudでhive3.1.2を構築する方法を教えます

環境の準備操作を開始する前に、hadoop バージョンがインストールされていることを確認してください...

一般的な JavaScript メモリ エラーと解決策

目次1. タイマー監視2. イベント監視3.オブザーバー4. ウィンドウオブジェクト5. DOM参照...