MySQL道普請便り

第54回 SQLコメントを使ってみよう

この記事を読むのに必要な時間:およそ 4 分

普段プログラムを書く時に,プログラムの解説や引数のヒントとしてコメントを書くことがあると思います。SQLを書く際にも同様にコメントを残したい場合があります。そこで,今回はSQL文にコメントを書く方法と,SQLにコメントを書くとどのようなことができるのかについて軽く解説していきます。

検証環境

今回はmacOS Sierra(10.12.6)Homebrewを利用してインストールしたMySQL(5.7.19)に対して行っています。また同じくHomebrewを利用してインストールしたSqlite3(3.9.2)を一部使用しています。

MySQLのコメント文の書き方

MySQLでSQLに使えるコメント文は,次で説明する以下の3通りの書き方があります。次からはそれらについて説明を行っていきます。

#を使ってコメントを書く

#を使ってコメントを書いてみた例が以下になります。

mysql> #コメント
mysql>

この例ではSQLに関係の無い日本語をコメントとして入れていますが,SQLでエラーが起こってないことがわかります。また,#から行末までがコメントとして扱われます。なので,以下のような形でSQLの途中にコメントをすることもできます。

mysql> select 1 +  #コメント
    -> 1;
+---------+
| 1 +
1 |
+---------+
|       2 |
+---------+
1 row in set (0.01 sec)
mysql>

しかし,この場合はカラム欄が崩れてしまいます。こちらは改行文字までコメントとして扱われるため,改行文字がサーバに送られてしまうため発生する問題です。

-- を使ってコメントを書く

先ほどの#を使った例と同様に,今度は--を使ってコメントを書いてみます。

mysql> -- コメント
mysql>

先ほどと同様に,こちらもコメントとして認識されているのがわかります。しかし,次の例ではどうでしょうか?

mysql> --コメント
    -> ;

行が継続した時と同じ表示が表示されていてコメントとして扱われていない事がわかります。一体上と下では何が違うのでしょうか。

実は,--の後ろにスペースが入ってるか入ってないかの違いによるものです。--は,1--1(1から-1を引く)等に使われる可能性があります。

mysql> select 1--1;
+------+
| 1--1 |
+------+
|    2 |
+------+
1 row in set (0.00 sec)

mysql>

負の数を引く場合にコメントとして扱われてしまうとちょっと困ってしまいますね。なので,--の後ろにスペースなどの空白文字や制御文字がある場合にのみコメントと解釈するようになってます。ちなみに,1---1の結果は0になります。

mysql> select 1---1;
+-------+
| 1---1 |
+-------+
|     0 |
+-------+
1 row in set (0.00 sec)

著者プロフィール

木村浩一郎(きむらこういちろう)

GMOメディア株式会社 技術推進室所属のWebアプリケーションエンジニア。最近はミドルウェア・インフラ周りのことも少しずつ学習しています。趣味は将棋。好きな戦法は四間飛車。

Twitter:@kk2170

コメント

コメントの記入