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

为何SQL提示‘Order’附近语法错误?我的建表代码存在问题吗?

问题原因及解决方案

你碰到的这个语法错误,根源在于Order是SQL Server的保留关键字——这类词是数据库系统预留用来执行特定操作的(比如排序用的ORDER BY语句里的Order),直接把它作为表名会让数据库引擎误以为你要执行某个SQL命令,从而抛出语法错误。

两种解决办法:

  • 方法一:用方括号包裹关键字作为标识符
    把表名Order用方括号[]括起来,明确告诉数据库这是一个表名而非关键字,修正后的代码如下:

    CREATE TABLE [Order] ( 
        OrderNumber INTEGER PRIMARY KEY, 
        OrderDate DATE, 
        CustomerNumber INTEGER, 
        CustomerPONumber INTEGER, 
        OrderTotal FLOAT, 
        OrderStatus VARCHAR(10), 
        OrderSpecialCharges FLOAT, 
        OrderSpecialChargeDescription VARCHAR(50), 
        ShipName VARCHAR (20), 
        ShipAddress1 VARCHAR (10), 
        ShipAddress2 VARCHAR (10), 
        ShipCity VARCHAR (10), 
        ShipState CHAR (2), 
        ShipZip INTEGER, 
        FOREIGN KEY (CustomerNumber) REFERENCES Customer 
    );
    
  • 方法二:修改表名为非关键字
    更推荐的做法是给表名换个不会和关键字冲突的名字,比如Orders(加个复数后缀),这样后续编写SQL时不用额外加方括号,代码更易读:

    CREATE TABLE Orders ( 
        OrderNumber INTEGER PRIMARY KEY, 
        OrderDate DATE, 
        CustomerNumber INTEGER, 
        CustomerPONumber INTEGER, 
        OrderTotal FLOAT, 
        OrderStatus VARCHAR(10), 
        OrderSpecialCharges FLOAT, 
        OrderSpecialChargeDescription VARCHAR(50), 
        ShipName VARCHAR (20), 
        ShipAddress1 VARCHAR (10), 
        ShipAddress2 VARCHAR (10), 
        ShipCity VARCHAR (10), 
        ShipState CHAR (2), 
        ShipZip INTEGER, 
        FOREIGN KEY (CustomerNumber) REFERENCES Customer 
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:42:29