# 1.7.2.4 '--' 作为评论的开始

标准 SQL 使用 C 语法/* 这是一条评论 */用于注释,MySQL Server 也支持这种语法。MySQL 还支持此语法的扩展,使 MySQL 特定的 SQL 能够嵌入到注释中,如中所述第 9.7 节,“评论”.

标准 SQL 使用“--”作为开始评论序列。MySQL 服务器使用#作为开始评论字符。MySQL 服务器还支持--评论风格。那就是--start-comment 序列必须后跟一个空格(或一个控制字符,例如换行符)。需要该空间以防止自动生成的 SQL 查询出现问题,这些查询使用如下结构,我们在其中自动插入付款的值支付

UPDATE account SET credit=credit-payment

考虑一下如果发生什么支付具有负值,例如-1

UPDATE account SET credit=credit--1

信用--1是 SQL 中的有效表达式,但--被解释为注释的开始,部分表达式被丢弃。结果是一个与预期含义完全不同的语句:

UPDATE account SET credit=credit

该语句根本不会产生任何价值变化。这说明允许评论以--可能会产生严重的后果。

使用我们的实现需要一个空格--以便在 MySQL Server 中将其识别为 start-comment 序列。所以,信用--1使用安全。

另一个安全的功能是mysql命令行客户端忽略以--.