我正在阅读有关mysql查询等的一些代码。我遇到了“`”的使用,某种类似PHP反引号的刻度线。我想知道他们的意思,他们的正式名称以及关于如何或何时使用它们的mysql参考链接。
这是我正在谈论的一个例子:
$update = mysql_query ("UPDATE tablename SET (column1,`".$EXPfields."`) =('$something','".$EXPvalues."')
在哪里.... “);
答案 0 :(得分:3)
它是反引号运算符,用于转义引用字段或表名称的单词,这些字段是MySQL的SQL方言中的保留字,或者包含空格等无效字符。因此,如果您有一个名为select
的表,其中包含一个名为select
的字段,您必须像这样检索它:
select `select` from `select`
反引号允许MySQL正确地将其解析为一个有效的查询,而不会混淆单词的含义。
答案 1 :(得分:1)
反引号是mysql的标识符引号字符。顾名思义,它的目的是引用标识符'(列,表...名称),以确保mysql理解你的意思。
您可以在mysql page about identifiers(搜索反推)
中找到有关它们的一些文档他们会提供帮助的明显示例是当您的列/表名称包含空格或保留字时(顺便说一下,这些都是不鼓励的做法)
// error, since order is a reserved word
SELECT order FROM table
// works, the column name is quoted
SELECT `order` FROM table
// error, since there is a space
SELECT field FROM my table
// works, the column name is quoted
SELECT field FROM `my table`
使用它们没有任何缺点,它们只能帮助mysql解析您的查询。
更多信息:
Benefits of using backtick (`) in MySQL queries? [dba.stackexchange.com]
答案 2 :(得分:0)
MySQL Reserved Words不能用作表名或列名。从技术上讲,唯一一个绝对需要使用反引号的地方是当你有一个表或列,其名称中有一个保留字。这告诉MySQL它不应该将名称解释为保留字,而只是表格/列名称。
然而,在实践中,我发现总是使用反引号是好的,因为它有助于区分SQL中的表/列名称和函数,操作数和其他结构。
答案 3 :(得分:0)