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

推薦する

Web ページのエンコーディングで gbk や gb2312 ではなく utf-8 が使用されるのはなぜですか?

選択肢がある場合は、UTF-8を使用することをお勧めします。実際、Windows システム自体のプロ...

MySQL インデックスの正しい使い方とインデックスの原理の詳細な説明

1. はじめになぜインデックスが必要なのでしょうか?一般的なアプリケーション システムでは、読み取り...

Vueのログインとログアウトの詳細な説明

目次ログインビジネスプロセスログイン機能の実装要約するまず、エフェクトの実装プロセスを見てみましょう...

JavaScript 日付ツールの概要

ユーティリティ = { /** * 死亡年ですか? * @return {Boolse} true...

MySQL マルチバージョン同時実行制御 MVCC の実装

トランザクション分離レベルの設定 グローバルトランザクション分離レベルを読み取りコミット済みに設定;...

CSS3は子供のころの紙飛行機を実現する

今日は折り紙飛行機(飛べる飛行機)を作ります基本的にすべてCSSで実装されており、JSはごく一部に過...

Dockerプライベートライブラリの実装

プライベート Docker レジストリのインストールとデプロイは、Docker テクノロジーを導入、...

MySQL でのバイナリ型操作

この記事は主にMySQLデータベースのバイナリ型操作を紹介し、具体的な内容を通して紹介します。MyS...

CentOS 7 で yum を使用して MySQL 5.7.20 をインストールする最も簡単な方法

CentOS7 のデフォルトのデータベースは mariadb ですが、mysql を使っている人も多...

MySQL における IF()、IFNULL()、NULLIF()、および ISNULL() 関数の使用に関する詳細な説明

MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...

echarts ワードクラウドチャートを使用した Vue の実践記録

echartsワードクラウドはechartsの拡張版ですhttps://echarts.apache...

NavicatがMySQL8.0.11に接続するとエラー2059が発生する

間違いNavicat Premium を使用して MySQL に接続すると、次のエラーが発生します。...

ドメイン名、ポート、IPに基づいてnginx仮想ホストを構築する

nginxでサポートされている仮想ホストには3つの種類があります1. ドメイン名ベースの仮想ホスティ...

一般的な docker コマンドの概要 (推奨)

1. 要約:一般的に、次のカテゴリに分類できます。 Docker 環境情報 — docker [i...

カルーセル効果を実現するためのネイティブJavaScript+CSS

この記事では、参考までに、カルーセル効果の具体的なコードをJavaScript+CSSを使用して実装...