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

推薦する

jsはキャンバスに基づいて時計コンポーネントを実装します

圧縮アップロード画像、スクラッチカード、ポスター作成、チャートプラグインなど、フロントエンド開発にお...

スクロール画像バーを実現するための CSS サンプルコード

一部の Web サイトでは、画像が連続的にスクロールしているのをよく見かけます。この効果は、CSS ...

MySQL 文字セットの文字化けとその解決方法

序文文字セットは、一連のシンボルとエンコード規則です。Oracle データベースでも MySQL デ...

JS のあらゆる場所で絶対等価演算子の使用をやめる

目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...

Javascript での JSBridge に関する予備的研究

目次JSBridgeの起源JSBridgeの双方向通信原理JSはネイティブを呼び出すネイティブコール...

Vue+video.jsはビデオプレイリストを実装します

この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...

CentOS システムのディスク パーティションを拡張する方法

問題/障害/シナリオ/要件Eve-ng の仮想マシン OVA のハードディスクは 38G しかないた...

jsを使ってシンプルなディスククロックを実現する

この記事では、参考までに、シンプルなディスククロックを実装するためのjsの具体的なコードを紹介します...

HTMLハイパーリンクタグAのTARGET属性の詳細な説明

ハイパーリンク <a> タグはリンク ポイントを表します。これは英語の単語「anchor...

MySQL テーブルの読み取り、書き込み、インデックス作成、その他の操作の SQL ステートメントの効率最適化の問題を分析します。

前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...

MycliはMySQLコマンドライン愛好家にとって必須のツールです

マイクリMyCLI は、自動補完と構文の強調表示を備えた MySQL、MariaDB、および Per...

Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する

1. 要件:データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップ...

jsはCanvasを使用して複数の画像を1つの実装コードにマージします

解決 関数 mergeImgs(リスト) { const imgDom = document.cre...

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

Linux で環境変数 JAVA_HOME を変更/設定する方法について簡単に説明します。

1. 永久的な変更、すべてのユーザーに有効# vi /etc/プロファイル//キーボードの[Shi...