注释语法
MySQL Server支持三种注释样式:
- 从
#
字符到行尾。 - 从
--
序列到行尾。在MySQL中,--
(双破折号)注释样式要求第二个破折号后必须至少包含一个空格或控制字符(例如空格,制表符,换行符等)。此语法与标准SQL注释语法稍有不同,如“'-'作为注释的开始”中所述。 - 从
/*
序列到以下*/
序列,如C编程语言中一样。此语法使注释可以扩展到多行,因为开始和结束序列不必在同一行上。
下面的示例演示了所有三种注释样式:
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版本中删除。(在某些情况下,可能允许嵌套注释,但通常不允许嵌套注释,用户应避免使用它们。)
MySQL Server支持C样式注释的某些变体。这些使您能够通过使用以下形式的注释来编写包括MySQL扩展但仍可移植的代码:
/*! MySQL-specific code */
在这种情况下,MySQL Server会像处理其他任何SQL语句一样解析并执行注释中的代码,但是其他SQL Server将忽略这些扩展。例如,MySQL Server可以STRAIGHT_JOIN
在以下语句中识别关键字,而其他服务器则不能:
SELECT /*! STRAIGHT_JOIN */ col1FROM table1,table2WHERE ...
如果在!
字符后添加版本号,则仅当MySQL版本大于或等于指定的版本号时,才会执行注释中的语法。KEY_BLOCK_SIZE
以下注释中的关键字仅由MySQL 5.1.10或更高版本的服务器执行:
CREATE TABLE t1( INT,KEY ( )) /*!50110 KEY_BLOCK_SIZE=1024 */;
刚刚描述的注释语法适用于mysqld服务器如何解析SQL语句。在MySQL的客户端程序将它们发送到服务器之前还执行语句的一些分析。(这样做是为了确定多语句输入行中的语句边界。)有关服务器和mysql客户端解析器之间差异的信息,请参见“ mysql客户端技巧”。
/*!12345 ...*/
格式的注释未存储在服务器上。如果此格式用于注释存储的程序,则注释不会保留在程序主体中。
C样式注释语法的另一个变体用于指定优化器提示。提示注释 +
在/*
注释打开顺序之后包含一个字符。例:
SELECT /* + BKA(t1) */FROM ... ;
有关更多信息,请参见“优化器提示”。
不支持在多行注释中使用简短的mysql命令。简短格式的命令可以在单行版本注释中使用,优化程序提示注释也可以在对象定义中存储。如果有这样的顾虑:优化器提示注释可以存储在对象定义,以便转储文件时重新加载会导致这种命令的执行,要么调用的MySQL与选项或使用以外的重装客户端的MySQL。 C
/*...*/
/*!...*/
/* +...*/
mysql
--binary-mode