我有一个关于mysql查询的简短问题。
什么是正确的?
SELECT * FROM Persons WHERE Year='1965'
或者
SELECT * FROM `Persons` WHERE `Year` = '1965'
这是个人选择还是这是真正的错误?
答案 0 :(得分:9)
如果您的标识符(列,表名,运算符等)包含MySQL保留字,则需要引号。
请点击此处查看保留字的完整列表:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
答案 1 :(得分:7)
两者都是正确的,但即使您使用通常被视为运算符的while
和NOW()
等关键字或函数,第二个也会被接受。
答案 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时所说的那样。