MySQL中的CREATE表语句出错

时间:2017-10-26 12:42:15

标签: mysql sql mysql-error-1064

我想在数据库中创建一个名为Projects的表ORDER,它有另一个表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

这里有什么问题?

1 个答案:

答案 0 :(得分:3)

正如所提到的评论,其中ORDER在MySQL中保留。完整列表位于文档here

您有三个选项,要么更改表名(我个人推荐),要么转义名称,要么使用数据库限定名称,例如:CREATE TABLE mydb.ORDER ....。如果您确实选择使用名为table(或column)的关键字,如果您忘记在另一个查询中将其转义,则可能会在以后遇到混淆的风险。如果这与客户联系在一起,也许可能是“CustomerOrder”表。

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)
);