MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで現在の区切り文字(DELIMITER)を確認・更新する方法

MySQLでは、ストアドプロシージャやトリガーを作成する際などに、ステートメントの区切り文字(デリミタ)を変更することがあります。ここでは、現在設定されている区切り文字を確認する方法と、それを新しいものに更新する方法を解説します。

現在の区切り文字を確認する

まず、MySQLで現在使用している区切り文字を確認するには、以下のコマンドを使用します。

\s

\sstatus の略)はサーバーのステータス情報を表示するコマンドで、その出力の中に「Using delimiter:」という項目が含まれており、ここで現在の区切り文字を確認できます。

実行例

mysql> \s

実行すると、以下のような出力が得られます。

C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe Ver 8.0.12 for Win64 on x86_64 (MySQL Community Server - GPL)
Connection id:          19
Current database:       sample
Current user:           root@localhost
SSL:                    Cipher in use is DHE-RSA-AES128-GCM-SHA256
Using delimiter:        ;
Server version:         8.0.12 MySQL Community Server - GPL
Protocol version:       10
Connection:             localhost via TCP/IP
Insert id:              11
Server characterset:    utf8
Db characterset:        utf8
Client characterset:    utf8
Conn. characterset:     utf8
TCP port:               3306
Uptime:                 9 hours 50 min 52 sec

Threads: 3  Questions: 135  Slow queries: 0  Opens: 272  Flush tables: 2  Open tables: 247  Queries per second avg: 0.003

この出力を見ると、「Using delimiter: ;」と表示されていることがわかります。つまり、現時点での区切り文字はデフォルトの「;」(セミコロン)です。

区切り文字を変更する

次に、区切り文字を「//」に変更してみましょう。区切り文字を変更するには、DELIMITER コマンドを使用します。構文は以下の通りです。

DELIMITER //

実際に実行すると、次のようになります。

mysql> DELIMITER //

これで区切り文字が「;」から「//」に変更されました。

変更後の確認

再度 \s コマンドを実行して、更新された区切り文字を確認しましょう。

mysql> \s

実行結果は以下の通りです。

C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe Ver 8.0.12 for Win64 on x86_64 (MySQL Community Server - GPL)
Connection id:          19
Current database:       sample
Current user:           root@localhost
SSL:                    Cipher in use is DHE-RSA-AES128-GCM-SHA256
Using delimiter:        //
Server version:         8.0.12 MySQL Community Server - GPL
Protocol version:       10
Connection:             localhost via TCP/IP
Insert id:              11
Server characterset:    utf8
Db characterset:        utf8
Client characterset:    utf8
Conn. characterset:     utf8
TCP port:               3306
Uptime:                 9 hours 54 min 10 sec

Threads: 3  Questions: 138  Slow queries: 0  Opens: 272  Flush tables: 2  Open tables: 247  Queries per second avg: 0.003

今回は「Using delimiter: //」と表示されており、区切り文字が正しく「//」に更新されたことが確認できます。

まとめ

  • 現在の区切り文字は \s コマンドの出力にある「Using delimiter」の項目で確認できる。
  • 区切り文字の変更は DELIMITER コマンドで行う(例:DELIMITER //)。
  • 変更後は再度 \s を実行すれば、更新後の区切り文字が反映されていることを確認できる。

なお、区切り文字の変更はクライアント側(mysqlコマンドラインツール)の機能であるため、ストアドプロシージャやトリガーなど、複数のステートメントを含む定義を作成する際によく利用されます。作業が完了したら、DELIMITER ; を実行してデフォルトの区切り文字に戻しておくと良いでしょう。

  1. MySQLで現在のデータベース名を指定してデータベースを削除する方法

    MySQLでは、DROP DATABASE文を使うことでデータベースを削除できます。ここでは、現在接続中のデータベース名を動的に取得し、そのデータベース自身を削除する手順を解説します。1. 現在のデータベース名を取得する現在選択されているデータベース名を確認するには、SELECT DATABASE()を使用します。select database();2. 削除クエリを動的に組み立てる構文現在のデータベース名をユーザー変数に格納し、CONCAT()で削除用のSQL文を組み立て、プリペアドステートメントとして実行します。基本的な構文は以下のとおりです。set @anyVariableName =

  2. mysqldとは?MySQLサーバーの基本構造と起動方法を徹底解説

    本記事では、MySQLサーバーの中核となる「mysqld」について、その仕組みや起動方法、システム変数の役割までわかりやすく解説します。 mysqldとは mysqldは「MySQLサーバー」とも呼ばれるプログラムで、MySQL環境における処理の大部分を担う単一のマルチスレッド型プログラムです。mysqldは追加のプロセスを生成せず、1つのプロセス内で効率的に動作するよう設計されています。 MySQLサーバーは、データベースやテーブルを格納する「MySQLデータディレクトリ」へのアクセス管理を担当します。このデータディレクトリは、ログファイルやステータスファイルなど、その他の情報を保存するデ