为什么我所有的SQL查询都必须使用`符号包装?

时间:2018-07-05 15:39:40

标签: mysql sql select phpmyadmin escaping

我一直在为课程编写数据库,并使用phpMyAdmin进行构建。现在,我正在使用查询工具进行查询。

当我选择要查询的表和数据并按“更新查询”时,它将生成看起来像这样的查询:

SELECT `Customer`.`CustomerName`, `OrderDetails`.`Product`, `OrderDetails`.`QuantityOrdered`
FROM `Customer`
LEFT JOIN `Order` ON `Order`.`Customer` = `Customer`.`CustomerID`
LEFT JOIN `OrderDetails` ON `OrderDetails`.`Order` = `Order`.`OrderID`

这很好,并且给了我期望的结果。但是,当我尝试编写自己的查询并输入“ SELECT Customer.CustomerName”之类的内容时,如果没有'符号,它将无法正常工作,只会引发错误消息。

为了使查询正常工作,我必须始终使用'符号包装它们吗?

2 个答案:

答案 0 :(得分:2)

前引号用于在MySQL中转义对象名称。除非使用的名称不是有效的标识符,否则不必使用它们-在这种情况下,表名order是保留字,必须转义。您正在使用的所有其他表和列似乎都可以。

答案 1 :(得分:1)

除了视觉上的噩梦和创建可怕的表名的能力外,反引号完全没有必要。但是,您将需要将所有变量都用单引号引起来。

从下面的示例中可以看到,PHPMYADMIN不需要使用反引号;

No backticks PHPMYADMIN example 删除反引号时,它不起作用的原因是因为您有一列名为“ order”的列。 Order是SQL中的关键字,因此,如果不将其用引号或反引号引起来,则不能用作列名。