MySQL 中的 CREATE table 语句出错

Error in CREATE table statement in MySQL

我想在名为 Projects 的数据库中创建一个 table ORDER,它还有另一个 table CUSTOMER。

以下是我使用的语句:

mysql> Create Table ORDER(
    -> OrderNo Integer(5) Primary Key,
    -> CustNo Integer(7),
    -> ItemName Varchar(30),
    -> Qty Integer(5),
    -> Price Decimal(6,2) Not Null,
    -> Foreign Key (CustNo) references CUSTOMER(CustID));

但是我收到了这个错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER(
OrderNo Integer(5) Primary Key,
CustNo Integer(7),
ItemName Varchar(30),
' at line 1

这里有什么问题?

如评论所述,ORDER等在MySQL中保留。完整列表在文档 here.

您有三种选择,要么更改 table 名称(我的个人建议),转义名称,要么使用数据库限定名称,例如:CREATE TABLE mydb.ORDER ....。如果您确实选择坚持使用名为 table(或列)的关键字,那么如果您忘记在另一个查询中转义它,您以后 运行 有混淆的风险。如果这与客户有关,也许它可能是 'CustomerOrder' table.

CREATE TABLE `ORDER`(
    OrderNo Integer(5) Primary Key,
    CustNo Integer(7),
    ItemName Varchar(30),
    Qty Integer(5),
    Price Decimal(6,2) Not Null,
    Foreign Key (CustNo) references CUSTOMER(CustID)
);

鉴于您有一个主键,您可能还希望它自动递增,这样您就不必手动创建键。

CREATE TABLE `ORDER`(
    OrderNo Integer(5) Primary Key AUTO_INCREMENT,
    CustNo Integer(7),
    ItemName Varchar(30),
    Qty Integer(5),
    Price Decimal(6,2) Not Null,
    Foreign Key (CustNo) references CUSTOMER(CustID)
);