在表或列的标题中使用SQL关键字

use*_*483 4 mysql sql keyword

我想把我的一张桌子命名为ORDER.我可以在SQL关键字中使用名称吗?这种做法有多糟糕?是否这样做?

如果这种情况已经存在,那么如何在查询中使用此表的名称?例如,我想:

SELECT * FROM ORDER;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * FROM ORDER ORDER BY NAME;
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 6

用反引号包装tableName,ORDER保留关键字.

SELECT * FROM `ORDER` ORDER BY NAME;
Run Code Online (Sandbox Code Playgroud)

在我看来,使用保留关键字很好,除了你不要忘记正确处理它,因为它会给你带来这样的痛苦.

但是通过多年设计架构,我从未使用过保留关键字 :D


小智 5

正如在另一个答案中所观察到的,在MySQL中使用反引号来指示单词是数据库对象,从而防止与保留字混淆 - 在SQL的其他方言,方括号[ ](SQLServer)或双引号" "(大多数其他方言)中使用.

根据我的经验,在表结构中使用保留字往往会导致问题,尤其是在编写新查询时 - 可能需要一段时间才能意识到返回的错误是由于保留字是列名.还有一点(正如这个问题的存在所表明的那样)并非所有人都知道你可以通过在查询中使用适当的引用字符来解决问题.