この記事では、例を使用して 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の実行プロセスとシーケンスについての簡単な説明
|