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

推薦する

Photoshop を使って Web ワイヤーフレームを作成する方法

この投稿では、通知、画像とビデオ、フォーム フィールド、タイトル、段落、箇条書きリスト、ナビゲーショ...

MySQL 8.0ドライバとAlibaba Druidバージョン間の互換性の問題を解決

この記事では主に、MySQL 8.0 ドライバーと Alibaba Druid バージョン間の互換性...

VMware ESXi のインストールと使用記録(ダウンロード付き)

目次1. ESXiをインストールする2. ESXiをセットアップする3. ESXiを起動するESXi...

Docker を使用してコンテナ内のルート パスワードを変更する方法

1. dockerfileを作成するときにsshパスワードを設定するには、次のコマンドを使用します。...

Linux で起動時にプログラムを自動的に実行させる最も簡単な方法

たくさん集めましたが、すべて失敗に終わりました。最終的に、この方法は優れており、使用に影響を与えない...

MySQLのワークベンチ例の詳細な説明

MySQL Workbench - モデリングおよび設計ツール1. モデルは、最も効果的で高性能なデ...

JSコードコンパイラMonacoの使い方

序文私が必要としているのは、構文の強調表示、関数プロンプト、自動行折り返し、およびコードの折りたたみ...

MySQL 4 の一般的なマスタースレーブレプリケーションアーキテクチャ

目次1つのマスターと複数のスレーブのレプリケーションアーキテクチャマルチレベルレプリケーションアーキ...

Reactの簡単な紹介

目次1. CDNの紹介1.1 react (最初にインポート) 1.2 react-dom(後ほど紹...

Nginx ルーティング転送とリバースプロキシロケーション構成の実装

Nginx を設定する 3 つの方法最初の方法は、位置一致部分を直接置き換える。 2 番目の pro...

子コンポーネントで vue activated を使用する詳細

ページ: ベース: <テンプレート> <div class="タブコンテ...

MySQL フラッシュリストとダーティページフラッシュメカニズム

1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...

MySQLの水平および垂直テーブルパーティションの説明

前回の記事で、MySQL ステートメントの最適化には限界があると述べました。MySQL ステートメン...

jsはaudioContextを通じて3Dサウンド効果を実現します

この記事では、audioContextを介して3Dサウンド効果を実現するためのjsの具体的なコードを...

SSHトンネルを使用してMySQLサーバーに接続する方法

序文場合によっては、データベースのイントラネット アドレスしか知らず、イントラネット経由で接続できな...