目录

  • 1、单行注释 --
  • 2、单行注释 #
  • 3、多行注释 /* */
  • 4、内联注释 /*! */


1、单行注释 --


-- 注释只能实现一行内容的注释,不能实现多行注释,注释的内容与 -- 需要使用空格隔开,注释的范围是从 -- 开始到一行的结尾。

例子如下:

-- 这是注释
SELECT * FROM `demo`;

SELECT * FROM `demo`; -- 这是注释

注意:由于 -- 后面的内容会被 MySQL 忽略,所以要注意 SQL 语句分号的位置,要么放在 -- 前面,要么放在下一行。



2、单行注释 #


# 注释原理和 -- 注释的原理一样,唯一不同点就是 # 与注释的内容不需要使用空格隔开

例子如下:

#这是注释
SELECT * FROM `demo`;

SELECT * FROM `demo`; #这是注释



3、多行注释 /* */


多行注释 /* */ 的原理是从 /* 开始,一直到 */ 为止,中间所有内容都为注释内容,期间可以跨任意行。但 /* 后面紧跟的第一个字符不能是 ! 号,否则会被解释为内联注释,建议 /* 后面使用空格隔开,保证其为标准的多行注释。

例子如下:

/* 这是注释 
 这是注释
*/
SELECT * FROM `demo`;



4、内联注释 /*! */


在 MySQL 中,/*! */ 被称之为内联注释,里面的内容是会被 MySQL 解析的。解析情况分为以下两种:

1)当 /*! 紧跟数据库版本号时

这种情况表示,当目前的数据库版本号大于指定的版本号时,里面的内容才会被解释 SQL 语句,否则会被当成注释处理而被忽略掉,比如:

CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */

表示当 MySQL 的版本号大于 4.1.00 时,后面的 SQL 语句才会被执行。

2)当 /*! 不紧跟版本号时

这种情况下,里面的内容会被当成 SQL 语句解析执行(默认),例如:

-- 内联注释语句
SELECT * FROM `demo` /*! where id = 2 */;

-- 解析后的语句相当于
SELECT * FROM `demo` where id = 2;

总结:一般来说,内联注释只有在紧跟版本号的情况下才有意义,其主要目的是通过版本号来控制部分语句在不同 MySQL 版本下的执行情况。