You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL建表语句语法错误求助:CREATE TABLE ORDER处报错

问题排查:CREATE TABLE ORDER 语法错误解析

嘿,这个问题我太熟了!你遇到的语法错误根源很简单:ORDER是SQL的保留关键字——数据库引擎会把它识别成ORDER BY这类排序命令的一部分,而不是你要创建的表名,所以直接用它来定义表就会触发语法错误。

两种解决方案:

1. 更换表名(推荐)

最简单也最稳妥的方式是换一个非保留字的表名,比如把ORDER改成ORDERS,这样完全不会有语法冲突。修正后的完整SQL代码如下:

CREATE TABLE CLIENT(
    CLIENT_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
    LAST_NAME VARCHAR(16) NOT NULL,
    FIRST_NAME VARCHAR(16) NOT NULL,
    STREET_ADDRESS VARCHAR(100) NOT NULL,
    APARTMENT_NUMBER VARCHAR(20) NOT NULL,
    CITY VARCHAR(50) NOT NULL,
    ZIP_CODE VARCHAR(10) NOT NULL
);

CREATE TABLE ORDERS(
    ORDER_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
    CLIENT_ID BIGINT NOT NULL,
    DATE_ORDERED BIGINT NOT NULL,
    ORDER_SUM FLOAT NOT NULL
);

(顺便提一句:SUM也是SQL聚合函数的保留关键字,我把它改成了ORDER_SUM,避免后续可能出现的隐性问题)

2. 使用标识符引号包裹保留字(如果必须用ORDER作为表名)

如果你因为业务需求一定要用ORDER作为表名,可以用数据库对应的标识符引号把它括起来,告诉引擎这是一个标识符而非关键字:

  • MySQL/MariaDB 使用反引号 `:
CREATE TABLE `ORDER`(
    ORDER_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
    CLIENT_ID BIGINT NOT NULL,
    DATE_ORDERED BIGINT NOT NULL,
    `SUM` FLOAT NOT NULL
);
  • PostgreSQL/SQL Server(需开启QUOTED_IDENTIFIER选项)使用双引号 ":
CREATE TABLE "ORDER"(
    ORDER_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
    CLIENT_ID BIGINT NOT NULL,
    DATE_ORDERED BIGINT NOT NULL,
    "SUM" FLOAT NOT NULL
);

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:47:41