MySQL を初めて学ぶときは、区切り文字の本当の目的を理解していないかもしれません。区切り文字は、ストアド プロシージャ、トリガー、関数など、MySQL のさまざまな場所で使用されます。 Oracle を学習した人にとって、MySQL を学ぶのは非常に奇妙で困惑するでしょう。 実際には、コマンドが終了したかどうか、および MySQL がそれを実行できるかどうかを MySQL インタープリターに伝えます。 デフォルトでは、区切り文字はセミコロン (;) です。 コマンドライン クライアントでは、コマンド行がセミコロンで終わる場合、mysql は Enter キーを押すとコマンドを実行します。次の文を入力すると
次に 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 における区切り文字の役割の詳細な説明です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。 以下もご興味があるかもしれません:
|
>>: Centos7 での nginx のインストールと設定に関する詳細なチュートリアル
1. 公式紹介grep は Linux でよく使用されるコマンドです。これは、ファイルやテキストに対...
質問: index.html で、iframe が son.html を導入します。son.html...
目次文字列オブジェクトのメソッド方法 1: indexOf() (推奨)方法 2: search()...
1. CSSスタイルは、テキストが長すぎる場合に省略記号を表示する問題を解決します1. 一般的なスタ...
簡単に言うと、ウェアハウスとして使用される仮想マシンの IP は 192.168.149.129 で...
目次序文1. 問題の原因2. 解決策VueはelementUIテーブルtr thの高さと背景色を変更...
クローラー対策ポリシー ファイルを追加しました: vim /usr/www/server/nginx...
yumコマンドYum (フルネームは Yellow dog Updater, Modified) ...
序文「大規模なフロントエンド プロジェクト向け」に設計されたフロントエンド フレームワークである A...
著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに...
目次1. すべて選択2. 商品の数量を増やすか減らす3. 商品の小計を変更する4. 合計と合計額を計...
JavaScript厳密モードが 8 進数をサポートしていないという問題に関して、まず、 Java...
時には、画像上に複数の領域を設定する必要があります。マウスで画像のさまざまな領域をクリックしてさまざ...
これで、autocomplete と呼ばれる input の属性を使用できるようになりました。オート...
この記事は主に、みんなで共有できるVue3ベースのフルスクリーンドラッグアップロードコンポーネントを...