标准 SQL 使用 C 语法/* this is a comment
*/
进行注释,MySQL Server 也支持这种语法。MySQL 还支持对此语法的扩展,使 MySQL 特定的 SQL 能够嵌入到注释中,如第 9.6 节,“注释”中所述。
标准 SQL 使用“ --
”作为开始-注释序列。MySQL 服务器#
用作开始注释字符。MySQL Server 还支持--
注释样式的变体。也就是说,--
开始注释序列后面必须跟一个空格(或一个控制字符,例如换行符)。需要空间以防止自动生成的 SQL 查询出现问题,这些查询使用如下结构,我们自动插入支付的值payment
:
UPDATE account SET credit=credit-payment
payment
考虑如果具有负值
会发生什么,例如-1
:
UPDATE account SET credit=credit--1
credit--1
是 SQL 中的有效表达式,但
--
被解释为注释的开始,表达式的一部分被丢弃。结果是一个与预期含义完全不同的语句:
UPDATE account SET credit=credit
该语句根本不产生任何值的变化。这说明允许评论开始
--
可能会产生严重的后果。
使用我们的实现需要一个空格,
--
以便它被识别为 MySQL 服务器中的开始注释序列。因此,
credit--1
使用安全。
另一个安全特性是mysql
命令行客户端忽略以
--
.