MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  コメントの先頭としての「--」

1.7.2.4 コメントの先頭としての「--」

標準 SQL では、コメントに C 構文 /* this is a comment */ が使用され、MySQL Server でも同様にこの構文がサポートされています。 セクション9.7「コメント」で説明するように、MySQL は、MySQL 固有の SQL をコメントに埋め込めるようにする、この構文の拡張機能もサポートします。

標準 SQL では、-- をコメント開始連続文字として使用します。 MySQL Server では、# をコメント開始文字として使用します。 MySQL Server は、-- コメントスタイルのバリアントもサポートしています。 つまり、-- コメント開始連続文字には空白 (または改行などの制御文字) を続ける必要があります。 この空白は、payment の値を自動的に挿入する次のような構造構文を使用した自動生成の SQL クエリーでの問題を防止するために必要です。

UPDATE account SET credit=credit-payment

payment の値が負数 (-1など) の場合、どうなるかを考えてみてください。

UPDATE account SET credit=credit--1

credit--1 は SQL では有効な式ですが、-- はコメントの先頭として解釈され、式の一部は破棄されます。 結果として、意図したものとはまったく異なる意味を持つステートメントとなってしまいます。

UPDATE account SET credit=credit

このステートメントでは、値が変更されることは一切ありません。 これは、コメントを -- で開始できるようにすると、深刻な結果を招く可能性があること示します。

実装を使用するには、MySQL Server で開始コメントシーケンスとして認識されるように、-- の後にスペースが必要です。 したがって、credit--1 は安全に使用できます。

別の安全な機能は、mysql コマンド行クライアントで -- で始まる行を無視するというものです。


関連キーワード:  コメント, credit, 標準, 制約, 開始, UPDATE, 先頭, サポート, 文字, 構文