Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中CREATETABLE语句出错_Mysql_Sql_Mysql Error 1064 - Fatal编程技术网

MySQL中CREATETABLE语句出错

MySQL中CREATETABLE语句出错,mysql,sql,mysql-error-1064,Mysql,Sql,Mysql Error 1064,我想在数据库中创建一个名为Projects的表顺序,它有另一个表客户 以下是我使用的语句: mysql> Create Table ORDER( -> OrderNo Integer(5) Primary Key, -> CustNo Integer(7), -> ItemName Varchar(30), -> Qty Integer(5), -> Price Decimal(6,2) Not Null, -&

我想在数据库中创建一个名为Projects的表顺序,它有另一个表客户

以下是我使用的语句:

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中保留的。完整的列表在文档中

您有三个选项,可以更改表名(我个人的建议)、转义名称或使用数据库限定名称,例如:
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)
);

正如前面提到的注释,
ORDER
等都是在MySQL中保留的。完整的列表在文档中

您有三个选项,可以更改表名(我个人的建议)、转义名称或使用数据库限定名称,例如:
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)
);

ORDER
是一个保留关键字,请更改表名或转义此名称。更改表名。如ORDER BY?@mystic saiyan:exactly@GordonLinoff感谢
ORDER
是一个保留关键字,请更改您的表名或转义此名称。更改表名。如ORDER BY?@mystic saiyan:exactly@GordonLinoff谢谢