在MySQL中,我们可以创建带有或不带有反引号(`
)符号的查询。例:
SELECT * FROM TEST;
SELECT * FROM `TEST`;
两者都可以在mysql-console中正常工作。
它们之间有技术上的区别吗?
`
相对于简单查询,使用()有什么好处?
在MySQL中,我们可以创建带有或不带有反引号(`
)符号的查询。例:
SELECT * FROM TEST;
SELECT * FROM `TEST`;
两者都可以在mysql-console中正常工作。
它们之间有技术上的区别吗?
`
相对于简单查询,使用()有什么好处?
Answers:
如果要在对象标识符周围使用某些内容,请至少使用标准双引号:
这适用于MySQL,PostgreSQL,SQL Server,Oracle等。对于MySQL,您可能需要使用SQL模式 ansi_quotes,具体取决于默认配置:
SET sql_mode = 'ANSI_QUOTES';
反引号`仅在MySQL中使用,您会学到一种SQL类型的SQL,它在其他任何品牌的DBMS中均不起作用。
如果您有一个保留名称的列,这可能会有所帮助,
例如:您可以查询如下语句:
select * from tablename group by `group`;
在我看来,@ 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的更多信息。