MySQL サーバーでは、3 つのコメントスタイルをサポートしています。
「#
」
文字から行末まで続く。
「--
」
シーケンスから行末まで続く。MySQL
では、「--
」
(ダッシュ 2 つ) のコメントスタイルの 2
つめのダッシュのあとに空白文字または制御文字
(スペース、タブ、改行など) を 1
つ以上挿入する必要があります。'--
' as the Start of a Commentで述べられたとおり、この構文は標準
SQL コメント構文とは少し異なります。
C
プログラミング言語のように/*
シーケンスから続く*/
シーケンスへ。開始および終了シーケンスが同行にある必要がないため、この構文は複数行にわたってコメントされることが許可されます。
次の例では 3 つすべてのコメントスタイルが説明されます。
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 サーバーでは C-スタイルコメントのバリアントがいくつかサポートされています。これらは MySQL 拡張を含むコードを記述することを可能にしますが、次のコメント形式を使用することで移行性を保持します。
/*! MySQL-specific code
*/
この場合、MySQL サーバーは構文解析し、ほかの
SQL
ステートメントのようにコメント内でのコードを実行しますが、ほかの
SQL
サーバーはその拡張を認識しません。たとえば、MySQL
サーバーは次のステートメント内で
STRAIGHT_JOIN
キーワードを認識しますが、ほかのサーバーは認識しません。
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
「!
」
文字のあとにバージョン番号を追加すると、コメント内の構文は、MySQL
のバージョンが指定されたバージョン番号と同等かそれ以上の場合にだけ実行されます。次のコメント内の
TEMPORARY
キーワードは
MySQL 3.23.02
またはそれ以降のサーバーでのみ実行されます。
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);
記述されたコメント構文は mysqld サーバーによる SQL ステートメントの構文解析に適用されます。mysql クライアントプログラムはサーバーに送信する前に、一部ステートメントの構文解析もします。(これは複数ステートメント入力行で、ステートメント境界表現を決定するために行われます)。
複数行の /* ... */
コメント内で、\C
などの短い形式の mysql
コマンドを使用することはできません。