`
)符号的查询。例如:SELECT * FROM TEST;
SELECT * FROM `TEST`;
在mysql-console中都可以正常工作。
使用(
`
)比简单查询有什么好处吗?#1 楼
它们称为带引号的标识符,它们告诉解析器将它们之间的文本作为文字字符串处理。当您具有包含关键字或空格的列或表时,它们很有用。例如,以下操作将不起作用:CREATE TABLE my table (id INT);
但是以下操作将不起作用:
CREATE TABLE `my table` (id INT);
以下内容将导致错误,因为
COUNT
是保留关键字:SELECT count FROM some_table
,但以下内容将被正确解析: >
希望对您有所帮助。
#2 楼
如果要在对象标识符周围使用某些东西,请至少使用标准双引号:“这适用于MySQL,PostgreSQL,SQL Server,Oracle等。对于MySQL,您可能需要SQL模式ansi_quotes,具体取决于默认配置:
SET sql_mode = 'ANSI_QUOTES';
反引号`仅在MySQL中使用,您将学到无法在任何其他品牌的SQL中使用的SQL类型DBMS。
#3 楼
这意味着表名称中可以有空格。当然,并不是特别吸引人。与SQL Server的[]相同。#4 楼
如果您有保留名称的列,这可能会有所帮助,例如:您可以查询如下语句:
select * from tablename group by `group`;
#5 楼
从我的角度来看,@ Mr.Brownstone答案仅部分正确。MySQL中使用反引号
`
来分隔表示标识符(而不是字符串)的文字。这使您可以使用通常不接受的字符(例如空格,保留字等)作为标识符。例如:
SELECT * FROM `Strange table name`;
还重要的是,它还允许解析器知道您是否在做错误的事情,例如选择不存在的列。例如:
SELECT notexistingcolumn FROM atable;
如果存在
atable
但notexistingcolumn
列不存在,它将被解释为文字字符串“ notexistingcolumn”,将其选择为值(并且可能会发出警告)。相反,如果您使用:SELECT `notexistingcolumn` FROM `atable`;
它将认识到
notexistingcolumn
是不包含以下内容的列的名称存在并引发错误。我总是希望用反引号将标识符括起来,包括别名,并尽量避免使用保留字和奇怪的字符作为标识符。
在https://dev.mysql.com/doc/refman/8.0/zh-CN/identifiers.html上了解有关MySQL反引号的更多信息。