使用反引号/反引号进行mysql查询

时间:2009-10-12 18:47:14

标签: sql mysql

我用反引号构建MYSQL查询。例如,

SELECT `title` FROM `table` WHERE (`id` = 3)

而不是:

SELECT title FROM table WHERE (id = 3)

我想我从Phpmyadmin导出中得到了这种做法,根据我的理解,甚至Rails都会生成这样的查询。

但是现在我看到越来越少的查询构建得像这样,而且,在查询中使用反引号代码看起来更加混乱和复杂。即使使用SQL辅助函数,没有它们也会更简单。因此,我正考虑将它们抛在后面。

我想知道在这种做法中是否还有其他含义,例如SQL(我的情况下是MySQL)解释速度等等。你怎么看?

5 个答案:

答案 0 :(得分:21)

反引号还允许表/列名称中的空格和其他特殊字符(显然除了反引号)。它们不是绝对必要的,但对安全是一个好主意。

如果您遵循合理的命名表和列的规则,则不必使用反引号。

答案 1 :(得分:16)

每当我看到这个讨论时,我都试图游说他们的包含,因为,好吧,答案已经隐藏在这里了,尽管没有进一步思考,但是狡猾地眨了眨眼。当我们错误地使用关键字作为字段或表名时,我们可以通过各种方法避免混淆,但只有敏锐地意识到反向勾号才能带来更大的好处!!!

sql语句中的每个单词都在整个关键字哈希表中运行,以查看是否存在冲突,因此,您已经通过告诉编译器嘿,我知道自己在做什么来为您查询了一个大忙不需要检查这些单词,因为它们代表表和字段名称。速度和优雅。

干杯, 布拉德

答案 2 :(得分:3)

反引号用于转义mysql查询中的保留关键字,例如:你希望有一个count列 - 不是那么罕见。

您可以在列/表/数据库名称中使用其他特殊字符或空格

它们不会让您免受注入攻击(如果您允许用户以某种方式输入列名 - 无论如何都是不好的做法)

它们不是标准化的sql,只能在mysql中工作;其他dbms将使用"代替

答案 3 :(得分:2)

好吧,如果您确保不会意外地使用关键字作为标识符,则不需要反引号。 : - )

答案 4 :(得分:1)

我认为反引号主要用于防止使用常见SQL标识符的错误查询,即LIMIT和COUNT。