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 のインストールと設定に関する詳細なチュートリアル

推薦する

Mysql は非集計列を選択できません

1. はじめに最近ブログをアップグレードし、記事ページの下部に前の記事と次の記事に直接ジャンプできる...

MySQLのバックアップとリカバリの簡単な分析

目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...

LinuxのCPU負荷とCPU使用率の詳細な説明

CPU 負荷と CPU 使用率これらは両方とも、ある程度、マシンの忙しさを反映できます。 CPU 使...

MySQL 5.7.21 のインストールと設定のチュートリアル

mysql5.7.21の簡単なインストール構成は次のとおりです。 1. MySQLのインストール1....

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

MySQL クエリにおける LIMIT の大きなオフセットによって引き起こされるパフォーマンス低下の分析

序文MySQLクエリはselectコマンドを使用し、limitとoffsetパラメータを使用して、指...

mysql replace into の使用法の詳細な説明

replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...

JavaScript を使用して QR コードを解析する 3 つの方法

目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...

Linux での SSH パスワードフリーログイン設定の詳細な説明

Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...

Linux ipcsコマンドの使用

1. コマンドの紹介ipcs コマンドは、Linux のプロセス間通信機能の状態を報告するために使用...

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は...

Websocket+Vuexはリアルタイムチャットソフトウェアを実装します

目次序文1. 効果は図の通りです2. 具体的な実施手順1. Vuexの紹介2.webscoked実装...

JavaScript プロトタイプの詳細

目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...

忘れられたMySQLパスワードとログインエラーの問題について簡単に説明します

MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...

Docker はクラスター MongoDB 実装手順を構築します

序文会社の業務上のニーズにより、独自の MongoDB サービスを構築する予定です。MongoDB ...