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 DDL操作の概要

図書館管理ライブラリを作成する データベースを作成します [存在しない場合] ライブラリ名;ライブラ...

動的なセカンダリメニューを実現するためのCSS

シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...

スペース均等互換性の問題を解決する2つの方法についての簡単な説明

flex は 2009 年のリリース以来、ほぼすべてのブラウザでサポートされています。シンプルでレス...

Div CSS 命名標準 CSS クラスの命名規則 (SEO 標準に準拠)

検索エンジン最適化 (SEO) では実行すべきタスクが多数ありますが、その中でもコードの最適化は重要...

Linuxコマンドに基づいてフォルダー内の特定のファイルパスを抽出します

最近では、特定のフォルダ内の特定のファイルを自動的に検索する必要があり、ファイルパスとファイル名を別...

PID を作成できないために MySQL が起動できない問題を解決する方法

問題の説明MySQL 起動エラー メッセージは次のとおりです。 mysqld を起動します (sys...

JavaScript プログラムのループ構造の詳細な説明

目次構造を選択ループ構造その間…しながらforループ…のために…で…の…のためにまとめループの終了壊...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

HTML でシンプルな ListViews 効果を実装するためのサンプル コード

シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...

ブラウザでビデオプレーヤーを実装するための基本的な考え方とコード

目次序文ブラウザにおけるオーディオとビデオに関する知識のまとめビデオエンコーディング包装形態オーディ...

Vue + Axios リクエストインターフェース方式とパラメータ渡し方式の詳しい説明

目次1. リクエストを取得する: 2. 投稿リクエスト: 3. 拡張と補足Vue スキャフォールディ...

jQuery をベースにリスト ループ スクロールを実装するためのヒント (超簡単)

良いアイデアを見つけたので記録しました。私は以前、スクロール効果を実現するためにjQueryを使用し...

Vue のスロットリング関数使用時の落とし穴ガイド

序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...

MySQLデータベースを定期的に自動バックアップする方法

データは貴重なものであることは誰もが知っています。データをバックアップしなければ、データをそのまま放...

Linuxダイナミックリンクライブラリの使用

通常のプログラムと比較すると、ダイナミック リンク ライブラリにはメイン関数がなく、一連の関数の実装...