是否真的需要MySQL查询中的表和列的引号?

时间:2012-04-26 17:46:20

标签: php mysql

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

什么是正确的?

SELECT * FROM Persons WHERE Year='1965'

或者

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

这是个人选择还是这是真正的错误?

4 个答案:

答案 0 :(得分:9)

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

请点击此处查看保留字的完整列表:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

答案 1 :(得分:7)

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

答案 2 :(得分:6)

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

SELECT something FROM table WHERE where = 1;

VS

SELECT something FROM `table` WHERE `where` = 1;

答案 3 :(得分:2)

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

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

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

但是,建议不要在别名中使用多个单词。

正如@Cody Caughlan在使用MySQL reserved words时所说的那样。