我想将其中一个表命名为ORDER
。我可以在SQL关键字中使用名称吗?这种做法有多糟糕?是否这样做?
如果这种情况已经存在,那么如何在查询中使用此表的名称?例如,我想:
SELECT * FROM ORDER;
或
SELECT * FROM ORDER ORDER BY NAME;
答案 0 :(得分:6)
使用反引号包装tableName,因为ORDER
是保留关键字。
SELECT * FROM `ORDER` ORDER BY NAME;
在我看来,使用保留的关键字是好的,除了你不要忘记妥善处理它,因为它会给你带来这样的痛苦。
但是通过多年设计架构,我从未使用过保留关键字:D
答案 1 :(得分:5)
正如在另一个答案中所观察到的,在MySQL中使用反引号来指示单词是数据库对象,从而防止与保留字混淆 - 在SQL的其他方言中,方括号[ ]
(SQLServer)或双引号改为使用" "
(大多数其他方言)。
根据我的经验,在表结构中使用保留字往往会导致问题,尤其是在编写新查询时 - 可能需要一段时间才能意识到返回的错误是由于保留字是列名。还有一点(正如这个问题的存在表明的那样)并非所有人都知道你可以通过在查询中使用适当的引用字符来解决问题。