Standard SQL uses the C syntax /* this is a comment
*/
for comments, and MySQL Server supports this
syntax as well. MySQL also support extensions to this syntax
that enable MySQL-specific SQL to be embedded in the comment,
as described in Section 8.6, “Comment Syntax”.
Standard SQL uses “--
” as a
start-comment sequence. MySQL Server uses
“#
” as the start comment
character. MySQL Server 3.23.3 and up also supports a variant
of the “--
” comment style.
That is, the “--
”
start-comment sequence must be followed by a space (or by a
control character such as a newline). The space is required to
prevent problems with automatically generated SQL queries that
use constructs such as the following, where we automatically
insert the value of the payment for
payment
:
UPDATE account SET credit=credit-payment
Consider about what happens if payment
has
a negative value such as -1
:
UPDATE account SET credit=credit--1
credit--1
is a legal expression in SQL, but
“--
” is interpreted as the
start of a comment, part of the expression is discarded. The
result is a statement that has a completely different meaning
than intended:
UPDATE account SET credit=credit
The statement produces no change in value at all. This
illustrates that permitting comments to start with
“--
” can have serious
consequences.
Using our implementation requires a space following the
“--
” for it to be recognized
as a start-comment sequence in MySQL Server 3.23.3 and newer.
Therefore, credit--1
is safe to use.
Another safe feature is that the mysql
command-line client ignores lines that start with
“--
”.
The following information is relevant only if you are running a MySQL version earlier than 3.23.3:
If you have an SQL script in a text file that contains
“--
” comments, you should use
the replace utility as follows to convert
the comments to use “#
”
characters before executing the script:
shell>replace " --" " #" < text-file-with-funny-comments.sql \
| mysql
db_name
That is safer than executing the script in the usual way:
shell> mysql db_name
< text-file-with-funny-comments.sql
You can also edit the script file “in place” to
change the “--
” comments to
“#
” comments:
shell> replace " --" " #" -- text-file-with-funny-comments.sql
Change them back with this command:
shell> replace " #" " --" -- text-file-with-funny-comments.sql
See Section 4.8.2, “replace — A String-Replacement Utility”.