我有一个关于 mysql 查询的简短问题。
什么是正确的?
SELECT * FROM Persons WHERE Year='1965'
或者
SELECT * FROM `Persons` WHERE `Year` = '1965'
这是个人选择还是真的有问题?
如果您的标识符(列、表名、运算符等)包含 MySQL 保留字,则需要引号。
有关保留字的完整列表,请参见此处:http: //dev.mysql.com/doc/refman/5.5/en/reserved-words.html
两者都是正确的,但第二个总是会被接受,即使你使用关键字或函数while
,NOW()
通常会被视为运算符。
如果您有一个名为 的表table
或一个名为 的列,该怎么办where
?这些是保留关键字。如果您在没有反引号的查询中使用它们,它们会产生无效的查询(当然,使用保留关键字是不好的做法)。
SELECT something FROM table WHERE where = 1;
对比
SELECT something FROM `table` WHERE `where` = 1;
两种方法都是正确的,单引号表示字符串的开始和结束。
因此,例如,如果您使用带有空格的列别名,Birth year
那么您将需要像这样使用单引号;
... WHERE `Birth year` = `1965`
但是,不建议在别名中只使用一个以上的词。
正如@Cody Caughlan 在您使用MySQL 保留字时所说的那样。