SQLのコメント使用方法は、DBMS(データベース管理システム)ごとに違います。
場合によっては、仕様が拡張されているケースもあります。
主要DBMSのSQLのコメントの使い方を見て行きましょう。
SQLコメントの使い方比較
Oracleのコメント使用方法
REMARK
行頭に「REMARK」と記述すると、行全体がコメントとして扱われます。
行の最後に「-」を記述すると、次の1行もコメントとして扱われます。しかし、複数行をコメントにする場合は、/* */を使用したほうがミスを防げるでしょう。
— (ハイフン・ハイフン)
行頭にハイフン・ハイフンを記述すると、行全体がコメントとして扱われます。
/* */ (スラッシュアスタリスク)
スラッシュアスタリスク「/*」から、アスタリスクスラッシュ「*/」までの範囲がコメント扱いになります。複数行範囲をコメントか可能。
OracleのSQL*Plusには、コメント行に空行を含めることができないという制限があります。
/* テスト */
/* * * テスト * */
/*+ append */などの記述は、データベースオプティマイザへのヒント句となります。大量データの処理時など、人間がオプティマイザに対して指定をおこない、パフォーマンスを上げる目的で使われます。
MySQLのコメント使用方法
# (シャープ)
行頭に「#」をつけると、行全体がコメント扱いになります。
— (ハイフン・ハイフン・空白)
行頭に「– 」をつけると、行全体がコメント扱いになります。
注意点は、ハイフン2つのあとに必ず半角空白または、制御文字(タブ、改行など)が必要な点。
/* */ (スラッシュアスタリスク)
スラッシュアスタリスク「/*」から、アスタリスクスラッシュ「*/」までの範囲がコメント扱いになります。
コメントの入れ子には非対応のため、以下の記述ではSyntaxエラーになります。
/* /* テスト */ */
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*/' at line 5
MySQLには独自の機能があります。
/*! */で囲った部分は、MySQLではSQLとして実行されますが、他のDBMSではコメント扱いになります。
SQL独自のコードを記述する際に役立ちます。
また、/*!の後ろにバージョン番号を記載すると、指定バージョン未満ではコメント、指定バージョン以上ではSQLとして実行されます。
旧バージョンのMySQL対応に役立ちます。
ただし、/*!(バージョン番号)*/というコメントは、サーバには保存されない点に注意が必要です。
SQLServerのコメント使用方法
— (ハイフン・ハイフン)
行頭に「–」をつけると、行全体がコメント扱いになります。SQL Server Management Studioのクエリエディタだと、コメント部分は緑色の文字になります。
SQL Server Management Studioでは、コメントアウト・アンコメント(コメントを外す)のショートカットが可能。
Ctrl+K → Ctrl+Cでコメントアウト、Ctrl+K → Ctrl+Uでアンコメントとなります。
/* */ (スラッシュアスタリスク)
スラッシュアスタリスク「/*」から、アスタリスクスラッシュ「*/」までの範囲がコメント扱いになります。
SQL Serverでは、コメントの入れ子が可能です。
/* /* テスト */ */
コメントの入れ子が可能なことのデメリットもあります。
コメント中で「/*」が出現すると、終わりのコメントマーク「*/」が必要になります。
以下のコードではエラーとなります。
/* SELECT @a = '/*'; */
エラーを回避するには以下のように記述します。
/* SELECT @a = '/*'; */ */
テーブルにコメントをつける
テーブルやカラムにコメントをつけることができます。簡易的なテーブル仕様書として利用できるため、都度テーブル定義書を参照しなくても、効率よく開発を進められます。
MySQLのテーブルにコメントをつける
データベースとして、MySQLのサンプルデータベースEmployeesを使っています。SQL実行結果の表示にはphpMyAdminを使用しています。
テーブル「salaries」のテーブルコメントを変更するSQLは以下の通り。
alter table salaries comment='給与テーブル';
テーブル「Salaries」のカラム「emp_no」のコメントに「社員番号」を設定するSQLは以下の通りです。
ALTER TABLE `salaries` CHANGE `emp_no` `emp_no` INT(11) NOT NULL COMMENT '社員番号';
MySQLではビューにコメントフィールド(TABLE_COMMENT)がありますが、ビューのコメントを変更する方法はありません。
MySQLでは、MySQL Workbenchを使うことで、ER図からデータベースを生成することができ、設計画面で指定したコメントが自動的に付与されます。(Enterprise Edition)
SQL Serverのテーブルにコメントをつける
SQL Serverでテーブルやカラムにコメントをつけるには、ストアドプロシジャ
sys.sp_addextendedpropertyを使います。
以下は、テーブルsalariesに「給与テーブル」というコメントをつける例。
EXEC sys.sp_addextendedproperty @name=N'MS_Description' ,@value=N'給与テーブル' ,@level0type=N'SCHEMA' ,@level0name=N'dbo' ,@level1type=N'TABLE' ,@level1name=N'salaries'
以下は、テーブルsalariesのemp_noカラムに「社員番号」というコメントをつける例です。
EXEC sys.sp_addextendedproperty @name=N'MS_Description' ,@value=N'社員番号' ,@level0type=N'SCHEMA' ,@level0name=N'dbo' ,@level1type=N'TABLE' ,@level1name=N'salaries' ,@level2type=N'COLUMN' ,@level2name=N'emp_no'
sp_addextendedproperty (TRANSACT-SQL) – SQL Server | Microsoft Docs
Oracleのテーブルにコメントをつける
以下のSQLは、テーブルsalariesに「給与テーブル」、カラム(列)「emp_no」に「社員番号」というコメントを付加する例です。
COMMENT ON TABLE salaries IS '給与テーブル'; COMMENT ON COLUMN salaries.emp_no IS '社員番号';
Oracle Database SQL言語リファレンス COMMENT
Oracle、SQL Serverではビューやシーケンスにもコメントを付加することが可能です。
SQLのコメントまとめ
- コメントの記述方法には、DBMSごとに記述方法が異なる。
- 多くのDBMSに共通するコメント記述方法は /* */
- データベースのテーブル、カラムなどにコメントをつけることで簡易的なテーブル定義書として使える