Sql Oracle中的标识符错误

Sql Oracle中的标识符错误,sql,oracle11g,Sql,Oracle11g,我编写以下代码来创建表,但每次运行它时,都会出现“无效标识符”错误。无法想出解决方案 CREATE TABLE LIPS( PRODUCT_ID NUMBER(6) PRIMARY KEY NOT NULL, PRODUCT_TYPE VARCHAR2(10) NOT NULL, PRODUCT_NAME VARCHAR2(10) NOT NULL, BRAND VARCHAR2(15) NOT NULL, SHADE VARCHAR2(20) NOT N

我编写以下代码来创建表,但每次运行它时,都会出现“无效标识符”错误。无法想出解决方案

CREATE TABLE LIPS(
    PRODUCT_ID NUMBER(6) PRIMARY KEY NOT NULL,
    PRODUCT_TYPE VARCHAR2(10) NOT NULL,
    PRODUCT_NAME VARCHAR2(10) NOT NULL,
    BRAND VARCHAR2(15) NOT NULL,
    SHADE VARCHAR2(20) NOT NULL,
    SIZE VARCHAR2(10) NOT NULL,
    PRICE NUMBER(10) NOT NULL
);
试试这个:

CREATE TABLE "LIPS"(
    "PRODUCT_ID" NUMBER(6) PRIMARY KEY NOT NULL,
    "PRODUCT_TYPE" VARCHAR2(10) NOT NULL,
    "PRODUCT_NAME" VARCHAR2(10) NOT NULL,
    "BRAND" VARCHAR2(15) NOT NULL,
    "SHADE" VARCHAR2(20) NOT NULL,
    "SIZE" VARCHAR2(10) NOT NULL,
    "PRICE" NUMBER(10) NOT NULL
);

在我看来,更改列的名称比转义名称要好得多:

CREATE TABLE LIPS (
    PRODUCT_ID NUMBER(6) PRIMARY KEY NOT NULL,
    PRODUCT_TYPE VARCHAR2(10) NOT NULL,
    PRODUCT_NAME VARCHAR2(10) NOT NULL,
    BRAND VARCHAR2(15) NOT NULL,
    SHADE VARCHAR2(20) NOT NULL,
    PRODUCT_SIZE VARCHAR2(10) NOT NULL,
    PRICE NUMBER(10) NOT NULL
);

这很重要,因为
SIZE
在Oracle中是一个保留字,因此您必须引用名为该词的字段。感谢@Donnie,您击败了我,为Codo的评论找到了答案。:)是的,你可以。或者最好使用另一个名称,如product_size,这样就不需要引用。对于引号,您必须在每个查询中使用引号,并且始终用大写字母书写名称。感谢help@TanzidKhan如果您想遵循最佳实践,请不要让列名与任何保留字(如日期、大小等)相同。。。。等