尝试在ORACLE SQL数据库中创建以下两个表,但是收到ORA-00904。第一张桌子很好,但是第二张桌子拒绝合作,在第一行失败了。请问有什么想法吗?
CREATE TABLE ORDERS
(ORDER_NUMBER VARCHAR(4),
ORDER_DATE DATE CONSTRAINT ORDER_ORDER_DATE_NN NOT NULL,
CUSTOMER_NAME VARCHAR(50) CONSTRAINT ORDER_CUSTOMER_NAME_NN NOT NULL,
POSTAGE NUMBER(4,2) CONSTRAINT ORDER_POSTAGE_NN NOT NULL,
ORDER_TOTAL NUMBER(8,2),
CONSTRAINT ORDER_NUM_PK PRIMARY KEY (ORDER_NUMBER)
);
CREATE TABLE ITEMS
(ITEM_NUMBER VARCHAR(3),
ITEM_DESCRIPTION VARCHAR(500) CONSTRAINT ITEMS_ITEM_DESCRIPTION_NN NOT NULL,
SIZE VARCHAR(1) CONSTRAINT ITEMS_SIZE_NN NOT NULL,
COST NUMBER(4,2) CONSTRAINT ITEMS_COST_NN NOT NULL,
QUANTITY NUMBER(4) CONSTRAINT ITEMS_QUANTITY_NN NOT NULL,
ORDER_NUMBER NUMBER(5),
CONSTRAINT ITEM_ITEM_NUM_PK PRIMARY KEY (ITEM_NUMBER),
CONSTRAINT ITEM_ORDER_NUM_FK FOREIGN KEY (ORDER_NUMBER)
REFERENCES ORDERS (ORDER_NUMBER),
);
答案 0 :(得分:0)
您可以使用以下内容:
CREATE TABLE ORDERS
(
ORDER_NUMBER NUMBER(5),
ORDER_DATE DATE CONSTRAINT ORDER_ORDER_DATE_NN NOT NULL,
CUSTOMER_NAME VARCHAR(50) CONSTRAINT ORDER_CUSTOMER_NAME_NN NOT NULL,
POSTAGE NUMBER(4,2) CONSTRAINT ORDER_POSTAGE_NN NOT NULL,
ORDER_TOTAL NUMBER(8,2),
CONSTRAINT ORDER_NUM_PK PRIMARY KEY (ORDER_NUMBER)
);
CREATE TABLE ITEMS
(
ITEM_NUMBER VARCHAR2(3),
ITEM_DESCRIPTION VARCHAR(500) CONSTRAINT ITEMS_ITEM_DESCRIPTION_NN NOT NULL,
"SIZE" VARCHAR2(1) CONSTRAINT ITEMS_SIZE_NN NOT NULL,
COST NUMBER(4,2) CONSTRAINT ITEMS_COST_NN NOT NULL,
QUANTITY NUMBER(4) CONSTRAINT ITEMS_QUANTITY_NN NOT NULL,
ORDER_NUMBER NUMBER(5),
CONSTRAINT ITEM_ITEM_NUM_PK PRIMARY KEY (ITEM_NUMBER),
CONSTRAINT ITEM_ORDER_NUM_FK FOREIGN KEY (ORDER_NUMBER)
REFERENCES ORDERS (ORDER_NUMBER)
);
ORDER_NUMBER
)应该是相同的类型。
是否同时使用NUMBER
或VARCHAR2(4)
类型。 (如果两列的两个值都完全由数字值组成,我建议将其存储为NUMBER类型。因为管理NUMBER值比STRING值要好。)SIZE
是保留关键字。所以把这个名字改成一个合适的名字
例如"SIZE"
或SIZE_
等还有一个逗号需要在结束之前删除
CREATE TABLE ITEMS'
括号
VARCHAR2
建议使用VARCHAR
作为字符串类型变量而不是Oracle
。
答案 1 :(得分:0)
我的版本是:
create table orders
( order_number varchar2(4) constraint order_num_pk primary key
, order_date date not null
, customer_name varchar2(50) not null
, postage number(4,2) not null
, order_total number(8,2)
);
create table items
( item_number varchar2(3) constraint item_item_num_pk primary key
, item_description varchar2(500) not null
, order_number constraint item_order_num_fk references orders (order_number)
, item_size varchar2(1) not null
, cost number(4,2) not null
, quantity number(4) not null
);
SIZE
是CREATE CLUSTER
语法的一部分,因此不允许用作列名。您可以将其命名为"SIZE"
(双引号),但是您每次都必须永远使用这种方式引用它,所以我改用item_size
。