6

根据文档,有两种方法可以在 MySql 中对行尾进行注释:

  • "#"
  • "-- "

这些有什么区别吗?

如果是这样,我应该什么时候使用一个与另一个?

如果没有,有谁知道为什么两者都支持?

对我来说似乎很奇怪,特别是当连字符版本仍然与标准SQL Syntax略有不同时。

4

3 回答 3

12

如果您希望您的 SQL 是可移植的,那么这才是真正重要的。例如--,Sqlite 和 Postegresql 中的注释是可以的,而#不是。您最好的选择是使用--空格跟随。(据我所知,我几乎从未见过其他任何东西)

于 2013-07-09T17:09:36.157 回答
5

正如您提供的链接清楚地解释它--是标准的 SQL“注释分隔符”。MySQL 与标准的不同之处在于需要一个空格才能--被识别为注释。“标准”SQL 不需要这个。

举个例子,在下面的代码中,--被识别为注释标记:

mysql> CREATE TABLE T(C int);   -- This is my new table
Query OK, 0 rows affected (0.18 sec)

但请注意交互式解释器如何在没有空格的情况下出现 --以下行为:

mysql> CREATE TABLE T(C int);   --This is my new table
Query OK, 0 rows affected (0.24 sec)

    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '--This is my new table' at line 1

MySQL支持其他一些注释格式以适应各种程序员的习惯:#像许多脚本语言和/* ... */像C一样。令人震惊的//是还没有成为它们的一部分。

mysql> CREATE TABLE T(C int);   /* This is my new table */
Query OK, 0 rows affected (0.22 sec)

mysql> CREATE TABLE T(C int);   # This is my new table
Query OK, 0 rows affected (0.24 sec)
于 2013-07-09T17:08:36.827 回答
0

Oracle 和 SQL Server(以及 DB2 和其他)都支持 -- 和 /* */(多行)注释标准。因此,在 MySQL 中使用相同的样式是一个好习惯,因为您可能会遇到在多个环境中编程的情况。

在 -- 之后需要一个空格是 MySQL 的一个奇怪之处,但这并不是什么大问题,因为它有助于清晰。

当然,如果您使用大量 perl 和 MySQL,那么您可能会出于类似原因选择 # 注释...

于 2014-07-18T16:22:21.987 回答