我正在阅读一些关于 mysql 查询等的代码,我遇到了“`”的使用,某种类似于 PHP 反引号的刻度线。我想知道它们是什么意思,它们的正式名称以及关于如何或何时使用它们的 mysql 参考链接。
这是我正在谈论的一个例子:
$update = mysql_query ("UPDATE tablename SET (column1,`".$EXPfields."`) =('$something','".$EXPvalues."')
在哪里 .... ”);
它是反引号运算符,用于转义引用字段或表名的词,这些词是 MySQL 的 SQL 方言中的保留词,或包含无效字符(如空格)。因此,如果您有一个名为 的表select
,其中有一个名为 的字段select
,则必须像这样检索它:
select `select` from `select`
反引号允许 MySQL 正确地将其解析为工作查询,而不会混淆单词的含义。
反引号是mysql的标识符引号字符。顾名思义,它的目的是引用标识符(列、表...名称),以确保 mysql 理解您的意思。
您可以在有关标识符的 mysql 页面中找到有关它们的一些文档(搜索反引号)
当您的列/表名包含空格或保留字(顺便说一句,这两种做法都是不鼓励的做法)时,它们会有所帮助的明显示例是
// 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 解析您的查询。
更多信息:
MySQL 有不能用作表名或列名的保留字。从技术上讲,绝对需要使用反引号的唯一地方是当您的表或列的名称包含其中一个保留字时。这告诉 MySQL 它不应该将名称解释为保留字,而应该简单地解释为表/列名。
但是,在实践中,我发现始终使用反引号是件好事,因为它有助于区分表/列名称和函数、操作数以及 SQL 中的其他结构。