10

我有一个关于 mysql 查询的简短问题。

什么是正确的?

SELECT * FROM Persons WHERE Year='1965'

或者

SELECT * FROM `Persons` WHERE `Year` = '1965'

这是个人选择还是真的有问题?

4

4 回答 4

9

如果您的标识符(列、表名、运算符等)包含 MySQL 保留字,则需要引号。

有关保留字的完整列表,请参见此处:http: //dev.mysql.com/doc/refman/5.5/en/reserved-words.html

于 2012-04-26T17:48:47.370 回答
7

两者都是正确的,但第二个总是会被接受,即使你使用关键字或函数whileNOW()通常会被视为运算符。

于 2012-04-26T17:48:16.173 回答
6

如果您有一个名为 的表table或一个名为 的列,该怎么办where?这些是保留关键字。如果您在没有反引号的查询中使用它们,它们会产生无效的查询(当然,使用保留关键字是不好的做法)。

SELECT something FROM table WHERE where = 1;

对比

SELECT something FROM `table` WHERE `where` = 1;
于 2012-04-26T17:52:02.640 回答
2

两种方法都是正确的,单引号表示字符串的开始和结束。

因此,例如,如果您使用带有空格的列别名,Birth year那么您将需要像这样使用单引号;

... WHERE `Birth year` = `1965`

但是,不建议在别名中只使用一个以上的词。

正如@Cody Caughlan 在您使用MySQL 保留字时所说的那样。

于 2012-04-26T18:00:08.783 回答