• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • 注释语法

    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 */ col1 FROM table1,table2 WHERE ...
    

    如果在!字符后添加版本号,则仅当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