Oracle创建表

Oracle创建表,oracle,ddl,Oracle,Ddl,我正在尝试使用oracle创建具有外键的表。我的语法如下 CREATE TABLE product ( product_id INT(7) NOT NULL, supplier_id INT(7) NOT NULL, product_name VARCHAR2(30), product_price DOUBLE(4), product_category VARCHAR2(30), product_brand VARCH

我正在尝试使用oracle创建具有外键的表。我的语法如下

CREATE TABLE product (
   product_id       INT(7) NOT NULL,
   supplier_id      INT(7) NOT NULL,
   product_name     VARCHAR2(30),
   product_price    DOUBLE(4),
   product_category VARCHAR2(30),
   product_brand    VARCHAR2(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
)
我犯了个错误,说

命令行错误:2列:14错误报告:SQL错误:ORA-00907: 缺少右括号 90700000-缺少右括号 *原因: *行动:


请帮忙

外键应该引用另一个表上的另一列

如何使用外键的正确语法编写查询

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR(30),
   product_brand    VARCHAR(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);
另外,将product_price列的数据类型从DOULBE4更改为NUMBER12,4


外键应该引用另一个表上的另一列

如何使用外键的正确语法编写查询

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR(30),
   product_brand    VARCHAR(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);
另外,将product_price列的数据类型从DOULBE4更改为NUMBER12,4


您不应该对int类型使用limit…oracle将采用int类型的默认长度。 您可以使用数字类型而不是int使其运行。在oracle中,双精度是一种数据类型,但不存在双精度。此外,外键的语法是错误的。 因此,此查询肯定会起作用:

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR2(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR2(30),
   product_brand    VARCHAR2(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);

您不应该对int类型使用limit…oracle将采用int类型的默认长度。 您可以使用数字类型而不是int使其运行。在oracle中,双精度是一种数据类型,但不存在双精度。此外,外键的语法是错误的。 因此,此查询肯定会起作用:

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR2(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR2(30),
   product_brand    VARCHAR2(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);

创建类似于外键引用的父表,该表是创建外键的正确语法

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR(30),
   product_brand    VARCHAR(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);

创建类似于外键引用的父表,该表是创建外键的正确语法

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR(30),
   product_brand    VARCHAR(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);

您的外键似乎非常缺少。您的外键似乎非常缺少。他使用的是Oracle数据库,而不是Oracle MySQL。您尝试过,但仍然出错!从命令的第1行开始出现错误:创建表supplier\u id numeric10不为空,supplier\u name varchar230不为空,supplier\u price double5,supplier\u address varchar250,supplier\u phone varchar15,命令行中的约束供应商\u pk主键供应商\u id错误:4列:23错误报告:SQL错误:ORA-00905:缺少关键字00905。00000-缺少关键字*原因:*操作:@user2714726将product_price列的数据类型从DOUBLE4更改为数字12,4。谢谢大家!我把一切都搞定了finally@user2714726如果这对您有效,请不要忘记将答案标记为正确。他使用的是Oracle数据库,而不是Oracle MySQL。您已经尝试过了,但仍然出现错误!从命令的第1行开始出现错误:创建表supplier\u id numeric10不为空,supplier\u name varchar230不为空,supplier\u price double5,supplier\u address varchar250,supplier\u phone varchar15,命令行中的约束供应商\u pk主键供应商\u id错误:4列:23错误报告:SQL错误:ORA-00905:缺少关键字00905。00000-缺少关键字*原因:*操作:@user2714726将product_price列的数据类型从DOUBLE4更改为数字12,4。谢谢大家!我把一切都搞定了finally@user2714726如果这对你有效,不要忘记将答案标记为正确