MySQLにおける区切り文字の定義と機能の詳細な説明

MySQLにおける区切り文字の定義と機能の詳細な説明

MySQL を初めて学ぶときは、区切り文字の本当の目的を理解していないかもしれません。区切り文字は、ストアド プロシージャ、トリガー、関数など、MySQL のさまざまな場所で使用されます。

Oracle を学習した人にとって、MySQL を学ぶのは非常に奇妙で困惑するでしょう。

実際には、コマンドが終了したかどうか、および MySQL がそれを実行できるかどうかを MySQL インタープリターに伝えます。

デフォルトでは、区切り文字はセミコロン (;) です。

コマンドライン クライアントでは、コマンド行がセミコロンで終わる場合、mysql は Enter キーを押すとコマンドを実行します。次の文を入力すると

mysql> select * from test_table;

次に Enter キーを押すと、MySQL はすぐにステートメントを実行します。

しかし、場合によっては、MySQL でこれを実行したくないことがあります。複数のステートメントを入力することができ、ステートメントにはセミコロンを含めることができます。

コマンドラインクライアントに次の文を入力しようとすると

mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> varchar(255) を返します
mysql> 開始
mysql> ISNULLの場合
mysql> <strong> '' を返します; </strong>
mysql> N < 15の場合
mysql> RETURN LEFT(S, N);
mysql> それ以外の場合
mysql> CHAR_LENGTH(S) <= Nの場合
mysql> S を返します。
mysql> それ以外の場合
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> 終了;

デフォルトでは、ユーザーがすべてのステートメントを入力するまで待ってからステートメント全体を実行することはできません。

mysql はセミコロンに遭遇すると自動的に実行されるためです。

つまり、 RETURN ''; ステートメントが実行されると、MySQL インタープリタが実行されます。

この場合、区切り文字を // や $$ などの他の記号に事前に置き換える必要があります。

mysql> 区切り文字 //
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> varchar(255) を返します
mysql> 開始
mysql> ISNULLの場合
mysql> '' を返します。
mysql> N < 15の場合
mysql> RETURN LEFT(S, N);
mysql> それ以外の場合
mysql> CHAR_LENGTH(S) <= Nの場合
mysql> S を返します。
mysql> それ以外の場合
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> 終了;//

この方法では、MySQL インタープリターは // が出現した場合にのみこのステートメントを実行します。

その上。 MySQL のストレージ プロセスでは、次の点に注意する必要があります。

proc_while_test が存在する場合は PROCEDURE を削除します。
デリミタ;;
CREATE DEFINER = root@localhost PROCEDURE proc_while_test(IN n int)
始める 
  i int を宣言します。
  int を宣言します。
 i = 0 に設定します。
  s = 0 に設定します。
  i <= n の場合
    s = s + i を設定します。i++ を設定します。
    i = i + 1 と設定します。
  終了WHILE;
  s を選択します。
終わり
;;
区切り文字 ;

上記の例では、set i++; により while ループ全体でエラーが報告されます。 MySQL ストアド プロシージャでは、i++ をこのように記述することはできません。 i=i+1 の形式で記述する必要があります。

補足:Mysqlにおける区切り文字の役割を見てみましょう

1. 区切り文字

delimiter は MySQL の区切り文字です。MySQL クライアントのデフォルトの区切り文字はセミコロン (;) です。
一度に複数のステートメントを入力し、ステートメントの途中にセミコロンがある場合は、特別な区切り文字を指定する必要があります。

2. 区切り文字の使用

前の記事では、MySQLトリガーを設定する例があります。

mysql> 区切り文字 // 
mysql> アカウントの更新前にトリガー upd_check を作成する  
  -> 各行ごとに 
  -> 開始 
  -> new.amount < 0 の場合 
  -> new.amount=0 を設定します。 
  -> elseif new.amount > 100 の場合 
  -> new.amount を 100 に設定します。 
  -> 終了の場合; 
  -> 終了; 
  -> // 
クエリは正常、影響を受けた行は 0 行 (0.00 秒) 
mysql> 区切り文字;

上記は、まずセパレータを//に設定し、

次の // に遭遇するまで、ステートメント全体は実行されません。

実行後、最後の行 delimiter; は MySQL 区切り文字をセミコロンにリセットします。

変更しない場合、このセッション内のすべての区切り文字は // に基づきます。

要約する

上記は、Mysql における区切り文字の役割の詳細な説明です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。

以下もご興味があるかもしれません:
  • MySqlの区切り文字の役割は何ですか

<<:  ウェブ計算機を実装するためのjs

>>:  Centos7 での nginx のインストールと設定に関する詳細なチュートリアル

推薦する

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

1. 公式紹介grep は Linux でよく使用されるコマンドです。これは、ファイルやテキストに対...

JavaScript 文字列オブジェクトメソッド

目次文字列オブジェクトのメソッド方法 1: indexOf() (推奨)方法 2: search()...

CSSスタイルは、テキストが長すぎる場合に省略記号を表示する問題を解決します

1. CSSスタイルは、テキストが長すぎる場合に省略記号を表示する問題を解決します1. 一般的なスタ...

独自の YUM リポジトリを作成する手順

簡単に言うと、ウェアハウスとして使用される仮想マシンの IP は 192.168.149.129 で...

要素テーブルヘッダー行の高さの問題の解決

目次序文1. 問題の原因2. 解決策VueはelementUIテーブルtr thの高さと背景色を変更...

UA による Web サイトのクロールを防ぐ Nginx のクローラー対策戦略

クローラー対策ポリシー ファイルを追加しました: vim /usr/www/server/nginx...

yum の基本的な使い方と例(推奨)

yumコマンドYum (フルネームは Yellow dog Updater, Modified) ...

Angularフレームワークのビュー抽象定義の詳細な説明

序文「大規模なフロントエンド プロジェクト向け」に設計されたフロントエンド フレームワークである A...

MySQLユーザー削除バグを解決する

著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに...

jQueryはすべてのショッピングカート機能を実装します

目次1. すべて選択2. 商品の数量を増やすか減らす3. 商品の小計を変更する4. 合計と合計額を計...

JavaScriptの厳密モードが8進数をサポートしていない問題の説明

JavaScript厳密モードが 8 進数をサポートしていないという問題に関して、まず、 Java...

ウェブ画像のホットリンクと座標値を設定するサンプルコード

時には、画像上に複数の領域を設定する必要があります。マウスで画像のさまざまな領域をクリックしてさまざ...

入力ボックスのオートコンプリート機能をオフにする

これで、autocomplete と呼ばれる input の属性を使用できるようになりました。オート...

Vue3 ベースのフルスクリーン ドラッグ アップロード コンポーネント

この記事は主に、みんなで共有できるVue3ベースのフルスクリーンドラッグアップロードコンポーネントを...