【问题标题】:SQL syntax issues with creating table [duplicate]创建表的 SQL 语法问题 [重复]
【发布时间】:2016-12-08 16:29:51
【问题描述】:

我在编写 DDL 脚本来创建表时遇到问题。我编写了以下代码来创建EMPLOYEECLIENT 表:

CREATE TABLE EMPLOYEE (
    Employee_id INT NOT NULL AUTO_INCREMENT,
    fname VARCHAR (15) NOT NULL,
    minit VARCHAR (1),
    lname VARCHAR (20) NOT NULL,
    address VARCHAR (55),
    start_date date,
    Job_type VARCHAR (20),
    PRIMARY KEY (Employee_id)
);


CREATE TABLE CLIENT (
    Client_id INT NOT NULL Auto_Increment,
    Rest_name VARCHAR (25) NOT NULL,
    Pri_contact_name VARCHAR (25) NOT NULL,
    Pri_phone CHAR (13) NOT NULL,
    Pri_email VARCHAR (35) NOT NULL,
    Cust_addr VARCHAR (50) NOT NULL,
    PRIMARY KEY (Client_id)
);

这些表的创建没有问题。但是,当我尝试使用以下代码创建 ORDER 表时:

CREATE TABLE ORDER (
    Order_id INT NOT NULL AUTO_INCREMENT,
    Order_Placed CHAR (10) NOT NULL,
    Delivered_on CHAR (10) NOT NULL,
    Total VARCHAR (8) NOT NULL,
    Ship_addr VARCHAR (50) NOT NULL,
    Order_status VARCHAR (35) NOT NULL,
    PRIMARY KEY (Order_id)
);

我收到了这个错误:

在第 27 行:您的 SQL 语法有错误;检查手册 对应于正确语法的 MySQL 服务器版本 在 'ORDER 附近使用(Order_id int NOT NULL AUTO_INCREMENT,
Order_Placed char(10) NOT NULL' 在第 1 行。

我不知道为什么我在使用之前有效表格中的相同代码时会收到此错误。

*我暂时忽略了 FK,只是为了弄清楚错误

【问题讨论】:

  • ORDER 是保留字。我建议您将其称为其他名称;也许是“命令”。

标签: mysql syntax mysql-error-1064


【解决方案1】:

由于ORDERreserved keyword,因此您需要使用反引号:

CREATE TABLE `ORDER` (
    Order_id INT NOT NULL AUTO_INCREMENT,
    Order_Placed CHAR (10) NOT NULL,
    Delivered_on CHAR (10) NOT NULL,
    Total VARCHAR (8) NOT NULL,
    Ship_addr VARCHAR (50) NOT NULL,
    Order_status VARCHAR (35) NOT NULL,
    PRIMARY KEY (Order_id)
);

【讨论】:

  • 成功了!!谢谢@Daerik
  • @houston 如果您发现答案对您有帮助,请将其标记为已接受,以便对其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 2021-01-08
  • 2020-06-27
  • 2010-09-19
  • 2015-11-07
  • 1970-01-01
  • 2014-03-11
  • 2015-02-04
  • 2018-12-04
相关资源
最近更新 更多