2016-03-12 37 views
0

我想弄清楚如何從現有表中創建Oracle SQL中的表。我只想使用某些列,並且想要將序列添加到序號爲的表中。使用特定的列和序號(Oracle SQL)從現有表創建新表

CREATE TABLE EMPLOYEE 
    (
    FNAME VARCHAR2(15) NOT NULL, 
    MINIT CHAR, 
    LNAME VARCHAR2(15) NOT NULL, 
    SSN CHAR(9) NOT NULL, 
    BDATE DATE, 
    ADDRESS VARCHAR2(30), 
    SEX CHAR, 
    SALARY NUMBER(10,2), 
    SUPER_SSN CHAR(9), 
    DNO NUMBER NOT NULL, 
    CONSTRAINT EMPPK PRIMARY KEY (SSN) DISABLE, 
    CONSTRAINT EMPSUPERFK FOREIGN KEY (SUPER_SSN) REFERENCES EMPLOYEE(SSN) DISABLE 
); 

我想使用FNAME,LNAME,SSN和BDATE列:
原始表與創建。我也想添加一個新列,EMP_NUM這是一個開始順序號在1000

我嘗試:

CREATE 
TABLE NEW_EMP 
    (EMP_NUM NUMBER) 
AS 
SELECT SSN, FNAME, LNAME, BDATE 
    FROM EMPLOYEE 

但不斷收到一個錯誤。每當我認爲我已經掌握了它,我就會得到一個錯誤。任何幫助表示讚賞。
感謝

回答

2

從您首先需要創建一個序列,然後在SELECT語句中使用序列填充EMP號:

create sequence seq_emp_num start with 1000; 

CREATE TABLE NEW_EMP 
AS 
SELECT seq_emp_num.nextval as emp_num, SSN, FNAME, LNAME, BDATE 
FROM EMPLOYEE; 

欲瞭解更多詳細信息,請參閱手冊:

+0

謝謝。就是這樣。 – Harlan

0

你可以做這樣的事情:

CREATE TABLE NEW_EMP AS 
SELECT ROW_NUMBER() OVER (ORDER BY EMPPK) + 999 as EMP_NUM, 
     SSN, FNAME, LNAME, BDATE 
FROM EMPLOYEE; 

我會小心這樣做,雖然。你的原始表格有一個主鍵,所以我認爲它應該隨處可見。另外,我沒有看到這樣的表格。您可以隨時在需要時輕鬆生成它,例如,在查詢中使用CTE。

+0

我會誠實的。這是爲了一堂課,儘管課堂上沒有任何地方提到這種說法。指示說使用CREATE SEQUENCE創建序列號。這就是說,當我運行它時,我得到「缺少SELECT關鍵字」。 – Harlan