开发者社区 问答 正文

MySQL关键字作为列名表名的处理方式

(有什么问题欢迎指教,企鹅:2172243813 更多资讯尽在通天源码论坛)

假如MySQL中的关键字在查询语句中作为列明或者表名出现,应该怎么处理。

例如

select desc from t;



一脸懵逼。尴尬。

于是乎,自己私下做了一个实验,发现了其中原因,特此分享。

创建t表,包含两个字段,id和desc



插入了三条数据



mysql> use test;
Database changed
mysql> select desc from t;
ERROR 1064 (42000): You have an error in your SQL syntax; check themanual that corresponds to your MySQL server version for the rightsyntax to use near 'desc from t' at line 1



果然出错了,其实出现这个错误的原因是desc这个单词是mysql数据库的关键字,所以sql语句执行到这里的时候觉得语句有问题。

处理方式,在列名字前后加上如下所示的符号


mysql> select `desc` from t;
+--------------+
|desc <div id="sina_keyword_ad_area2" newfont_family"="">       |
+--------------+
|23234       |
| klsadjflkasj |
|你好        |
+--------------+
3 rows in set (0.00 sec)<div newfont_family"="">
<div newfont_family"="">本文来自苦逼IT小子的新浪博客

展开
收起
通天技术 2017-09-20 16:03:51 3350 分享 版权
阿里云 AI 助理回答

在MySQL中,如果遇到关键字与你的表名或列名冲突的情况,可以通过对表名或列名使用反引号(`)来解决这个问题。反引号可以确保数据库正确解析这些可能与MySQL保留关键字冲突的标识符。

在您的例子中,desc 是一个保留关键字,它通常用于描述“降序”排序。因此,当您想查询名为 desc 的列时,需要这样写:

SELECT `desc` FROM t;

通过这种方式,MySQL将把 desc 视为列名而非关键字,从而正确执行查询。同样的规则也适用于其他任何可能与MySQL关键字冲突的表名或列名。记得,使用反引号包裹标识符是一个良好的实践,尤其是当你不确定某个名称是否为关键字时。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答