create table new_table as select ...from old_table ... 建立表後,依附於表的約束、鍵值、索引都不存在
emp 表
列名 |
型別 |
可為空 |
預設值 |
EMPNO |
NUMBER(4) |
||
ENAME |
VARCHAR2(10) |
Y |
'YJG' |
JOB |
VARCHAR2(9) |
Y |
|
MGR |
NUMBER(4) |
Y |
|
HIREDATE |
DATE |
Y |
|
SAL |
NUMBER(7,2) |
Y |
|
COMM |
NUMBER(7,2) |
Y |
|
DEPTNO |
NUMBER(2) |
Y |
鍵值情況
PK_EMP |
Primary |
EMPNO |
Y |
N |
N |
2013-4-25 9:22 |
|||
FK_DEPTNO |
Foreign |
DEPTNO |
Y |
DEPT |
DEPTNO |
No action |
N |
N |
2013-4-25 9:22 |
檢查約束情況
EMP_SAL |
sal>100 |
Y |
N |
N |
2013-4-25 9:25 |
索引情況
SCOTT |
EMP_ENAME |
Normal |
ENAME |
N |
N |
tablespace users pctfree 10 initrans 2 maxtrans 255 storage ( initial 64k minextents 1 maxextents unlimited ) |
|||||||||||
SCOTT |
PK_EMP |
Unique |
EMPNO |
N |
N |
tablespace users pctfree 10 initrans 2 maxtrans 255 storage ( initial 64k minextents 1 maxextents unlimited ) |
--用 create table ...as select ....
CREATE TABLE emp_copy
AS
SELECT * from emp;
emp_copy 表
EMPNO | NUMBER(4) | Y |
ENAME | VARCHAR2(10) | Y |
JOB | VARCHAR2(9) | Y |
MGR | NUMBER(4) |
Y |
HIREDATE | DATE | Y |
SAL | NUMBER(7,2) | Y |
COMM | NUMBER(7,2) | Y |
DEPTNO | NUMBER(2) | Y |
建立好後,除了內容一樣之外,所有約束、鍵值、索引、預設值均沒有了;
表 emp 是與上一樣的結構和鍵值,dept 的主鍵deptno在emp裡作為主鍵;那麼執行
drop table dept casecade constraints; 命令後表dept被刪掉;同時emp上的外來鍵被移除;
如果用 flashback table dept to before drop ;閃回dept 表的話,那麼dept 上的主鍵約束以及索引都能閃回,只是名字有系統自動生成;
並且 emp不會有任何改動;
如果 要加上原來的外來鍵那麼需要執行ALTER TABLE emp ADD CONSTRAINTS fk_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno);