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 クラスターを構築し、セッション共有を実現する

推薦する

Linuxにgitをインストールする方法

1. はじめにGit は、規模の大小を問わずあらゆるプロジェクトを俊敏かつ効率的に処理するために使用...

MySQL のロックとトランザクションの簡単な分析

MySQL 自体はファイルシステムに基づいて開発されましたが、ロックの存在が異なります。データベース...

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

CSS を使用して等アスペクト比のアダプティブ コンテナを実装する方法

最近、モバイル ページを開発しているときに、ページの幅が 100% の場合、高さは幅の半分になり、携...

サブメニューをクリックする効果を実現するJavaScript

この記事では、クリック時にサブメニューを表示するためのJavaScriptの具体的なコードを参考まで...

MySQL の制限パフォーマンス分析と最適化

1. 結論構文: 制限オフセット、行結論: 同じ行条件では、オフセット値が大きいほど、limitステ...

MySQL 5.7.23 のインストールと設定方法のグラフィックチュートリアル

この記事では、参考として MySQL 5.7.23 のインストール チュートリアルを記録します。 1...

Angular CLI リリース パスの構成項目の簡単な分析

序文プロジェクトのリリースでは、常に特定の状況に応じたパッケージ化が必要です。Angular CLI...

Dockerコンテナ内の設定ファイルの変更の実装

1. コンテナに入るdocker run [オプション] イメージ名 [起動コンテナに渡されるコマン...

三角形を描画するための CSS 実装コード (border メソッド)

1. 単純な三角形を実装するCSS ボックス モデルの境界線を使用すると、次のような三角形を実現で...

HTML サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。定義と使用法: <...

MySQL クエリ キャッシュとバッファ プール

1. キャッシュ - クエリキャッシュ次の図は、MySQL 公式サイトから提供されています: MyS...

VMware vCenter の不正な任意ファイルアップロードの脆弱性 (CVE-2021-21972) について

背景CVE-2021-21972 VMware vCenter における認証されていないコマンド実行...

CSS3はリストの無限スクロール/カルーセル効果を実現します

効果プレビューアイデア現在のリストを最後の項目までスクロールし、すぐに最初の項目に戻ります。問題1....

CSS の新機能には、コントロールページの再描画と再配置の問題が含まれています

新しい CSS プロパティ contain を紹介する前に、読者はページの再描画と再配置が何であるか...