我试图弄清楚如何从现有表中创建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
但是一直都是错误的。每次我认为我得到它,我都会收到错误。任何帮助表示赞赏 感谢
答案 0 :(得分:2)
要从首先创建序列的序列中填充emp编号,然后在select语句中使用它:
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;
有关详细信息,请参阅手册:
答案 1 :(得分:0)
你可以这样做:
CREATE TABLE NEW_EMP AS
SELECT ROW_NUMBER() OVER (ORDER BY EMPPK) + 999 as EMP_NUM,
SSN, FNAME, LNAME, BDATE
FROM EMPLOYEE;
但是,我会小心这样做。你的原始表有一个主键,所以我认为应该跟随每一行的每一行。另外,我觉得这样的桌子用处不大。您可以随时在需要时轻松生成它,例如,在查询中使用CTE。