我想在数据库中创建一个名为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
这里有什么问题?
答案 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)
);