我有 2 张桌子:PLAYER
和GROUP
.
当我打电话时:
SELECT * FROM PLAYER
一切都很好,但是当我打电话时:
SELECT * FROM GROUP
有错误:
#1064
- 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“GROUP”附近使用正确的语法
我不明白为什么会出现这样的错误。
我有 2 张桌子:PLAYER
和GROUP
.
当我打电话时:
SELECT * FROM PLAYER
一切都很好,但是当我打电话时:
SELECT * FROM GROUP
有错误:
#1064
- 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“GROUP”附近使用正确的语法
我不明白为什么会出现这样的错误。
正如您使用保留关键字 SELECT 和 FROM 来构建查询一样,在命名所有表、视图、约束和列时,您可能希望避免使用其他保留关键字,如下表中的那些。
(一些)保留关键字列表:WHERE、ORDER、GROUP、UPDATE、DELETE、CHECK、CHANGE、LIKE 等...
因此,在您的情况下,数据库引擎抱怨,因为查询需要 1 个强制子句 SELECT 和可选子句 FROM、WHERE、ORDER BY、GROUP BY、HAVING、LIMIT 等……在这里阅读更多
我们可能很想使用这些关键字;特别是如果它们已经在我们的问题域(或图表)中建模。例如,客户下订单产生 2 个实体 CLIENT 和 ORDER 等,或者机械师执行检查,给出 MECHANIC 和 CHECK。甚至是表达 LIKE 的 FACEBOOK_USER。或者在您的情况下,例如可能有一群人。
作为一般规则,您可以像这样转换实体以避免出现问题:-
a) 实体总是(在纸上)建模为单一的,因为它代表现实世界或问题域中的概念/资产/人。例如。订购,喜欢,检查,学生,汽车
b) 它转换成的相应 DB 表总是使用复数命名。逻辑是该表将包含该实体的许多实例。因此,订单、喜欢、支票、学生、汽车
最后,您做出决定,因为如果您真的想要或需要使您的表名像保留字一样,您真的可以使用 GROUP。只需记住在查询时使用反引号 (“`”) 将它们放在引号中,以便对其进行特殊处理。在创建时,数据库引擎不会抱怨,相信您知道自己在做什么。