SQL创建基于已创建表中的列的新表

时间:2015-06-25 15:48:45

标签: sql oracle oracle-sqldeveloper

这是我需要的一个例子,不同的值: 我已经在数据库中创建了表1。 表1:人 列:PK-> ID,名称,喜欢的颜色,喜欢的运动等。 此表已在数据库中并填充了值。

现在我想创建第二个表,表2中有一个来自我的表1的收藏夹运动列的主键,还有一个列用于描述。 例如: 表2:体育 专栏:Pk->喜欢的运动,描述

我想确保我只是正确创建这张桌子,所以我不会弄乱任何东西。这是正确的语法吗? (我会在创建表格后单独填写数据。)

CREATE TABLE Sports( Favorite_Sport Varcher(25), 描述Varcher(100), PRIMARY KEY(Favorite_Sport), 外键(Favorite_Sport)参考人员; )

谢谢!

1 个答案:

答案 0 :(得分:0)

可能有几种方法可以做到这一点,但我想我会选择

CREATE TABLE Sports
  (SPORT        Varchar2(25)
     CONSTRAINT PK_SPORTS
       PRIMARY KEY
       USING INDEX,
   Description  Varchar2(100));

(我将SPORTS桌上主键列的名称改为SPORT)。

您真的不想要也不能拥有SPORTS.SPORT参考PERSON.FAVORITE_SPORT,因为FAVORITE_SPORT不是PERSON上的主要或唯一密钥。相反,您希望外键关系反过来,PERSON.FAVORITE_SPORT引用SPORTS.SPORT:

ALTER TABLE PERSON
  ADD CONSTRAINT PERSON_FK1
    FOREIGN KEY (FAVORITE_SPORT) REFERENCES SPORTS(SPORT);

SQLFiddle here

祝你好运。