Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのコメントについてまとめています。

SQLのコメントのサンプルコード

SQLのコメントにはDBMSによって差異があります。サンプルを交えて、独自拡張部分を紹介します。

【関連記事】
SQLのコメントの使い方 主要DBMSだけでもこれだけ違う 独自拡張機能も

OracleのSQLコメントの例

「REMARK」は、OracleのコマンドラインインタフェースSQL*Plusで有効なコメント用コマンドです。SQL標準ではないので、Oracle以外ではエラーになります。

REMARK Commission Report;
REMARK to be run monthly.;
COLUMN LAST_NAME HEADING 'LAST_NAME';
COLUMN SALARY HEADING 'MONTHLY SALARY' FORMAT $99,999;
COLUMN COMMISSION_PCT HEADING 'COMMISSION %' FORMAT 90.90;
REMARK Includes only salesmen;
SELECT LAST_NAME, SALARY, COMMISSION_PCT
FROM EMP_DETAILS_VIEW
WHERE JOB_ID='SA_MAN';

参考)Oracle公式ドキュメント:スクリプトへのコメントの挿入について

「/*」と「*/」で囲むと複数行のブロックコメントアウトができます。1行のみのコメントアウトも可能です。ただし、コメントのネスト(入れ子)はできません。

/* Commission Report
 to be run monthly. */
COLUMN LAST_NAME HEADING 'LAST_NAME';
COLUMN SALARY HEADING 'MONTHLY SALARY' FORMAT $99,999;
COLUMN COMMISSION_PCT HEADING 'COMMISSION %' FORMAT 90.90;
REMARK Includes only salesmen;
SELECT LAST_NAME, SALARY, COMMISSION_PCT
FROM EMP_DETAILS_VIEW
/* Include only salesmen.*/
WHERE JOB_ID='SA_MAN'; 

「–」は記述した部分から行の最後までをコメント扱いにします。「/*」と「*/」の間で使うことで、擬似的にコメントのネストが可能です。

-- Commissions report to be run monthly
DECLARE --block for reporting monthly sales

ただし、行の途中から「–」を記述して良いのは、SQLの記述の場合のみ。SQL*Plusのコマンドの場合は、行頭でのみコメントが可能です。例えば、以下の場合はコメントとして扱われません。

SET LONG 777 -- set maximum width for LONG to 777

SQL ServerのSQLコメントの例

「–」は記述した箇所から行末までをコメントとして扱います。

-- Choose the AdventureWorks2012 database.  
USE AdventureWorks2012;  
GO  
-- Choose all columns and all rows from the Address table.  
SELECT *  
FROM Person.Address  
ORDER BY PostalCode ASC; -- We do not have to specify ASC because   
-- that is the default.  
GO  

SQL Serverでは、「/*」「*/」を使って、コメントを入れ子(ネスト)にすることが可能です。以下の記述では、SQL内の「/*」が入れ子のコメント内のコメント開始と解釈され、対応する「*/」がないためエラーとなります。

DECLARE @comment AS VARCHAR(20);  
GO  
/*  
SELECT @comment = '/*';  
*/  
SELECT @@VERSION;  
GO  

エラーを回避するには、以下のように記述します。

DECLARE @comment AS VARCHAR(20);  
GO  
/*  
SELECT @comment = '/*';  
*/ */  
SELECT @@VERSION;  
GO  

参考)スラッシュ アスタリスク (ブロック コメント) (Transact-SQL) – SQL Server | Microsoft Docs

MySQLのSQLコメントの例

MySQLでは、単一行のコメントアウト「–」と「/* ~ */」のブロックコメントアウトに加えて、「#」が使用可能。#を記述した箇所から行末までがコメント扱いになります。

ただし、「#」は標準SQLではないため、MySQL以外ではエラーになります。他のDBMSへの移植性を考慮するなら、「#」を使うのは避けたほうが良いでしょう。

mysql> SELECT 1+1;     # This comment continues to the end of line
mysql> SELECT 1+1;     -- This comment continues to the end of line
mysql> SELECT 1 /* this is an in-line comment */ + 1;
mysql> SELECT 1+
/*
this is a
multiple-line comment
*/
1;

参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 9.6 コメントの構文

MySQLでは、ブロックコメントの入れ子は許可されていません。一時的な複数行のブロックコメントの中に、コメントをつけたい場合は、「–」を併用しましょう。

/* この記述方法はOK
 --
 -- comment
*/

なお、入れ子になっているブロックコメント箇所に「–」を入れてもエラーとなります。

/* この記述方法だとエラーになる
 --
 -- /* comment */
*/

PostgreSQLのSQLコメントの例

PostgreSQLは、ブロックコメント「/* ~ */」を入れ子(ネスト)にできます。

-- これは標準 SQL92 のコメントです

/* ネスト付き
 * 複数行コメント /* ネストされたブロックコメント */
 */

参考)PostgreSQLの公式ドキュメント:SQLの構文

主要DBMSで共通して使えるコメントは「–」のみです。「/* */」を使ったブロックコメントは各DBMSで独自拡張という扱いになっていて、入れ子が許可されているものと許されていないものがあります。他のDBMSへの移植性を考慮するなら、コメントは「–」か「ネストにしない/* ~ */のブロックコメント」のみ使用するのが良いでしょう。

まとめ

ポテパンダの一言メモ
  • 「–」は単一行のコメントアウト、「/* ~ */」は複数行のブロックコメントアウト
  • ブロックコメントアウトは、DBMSによって入れ子記述が可能な場合あり
  • DBMSにより「#」や「REMARK」など独自のコメントマークがある

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。