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

Joc*_*ery 10 php mysql

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

什么是正确的?

SELECT * FROM Persons WHERE Year='1965'
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * FROM `Persons` WHERE `Year` = '1965'
Run Code Online (Sandbox Code Playgroud)

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

Cod*_*lan 9

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

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


Man*_*uel 7

两者都是正确的,但第二个将永远被接受,即使您使用关键字或功能,如whileNOW()通常会被视为运营商.


Nad*_*adh 6

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

SELECT something FROM table WHERE where = 1;
Run Code Online (Sandbox Code Playgroud)

SELECT something FROM `table` WHERE `where` = 1;
Run Code Online (Sandbox Code Playgroud)