了高峰期后,再手工使用drop命令删除原计划删除的列。因为设置unused只是做了一个删除的标记,实际的数据依然存在在数据库中,但是这样的数据是查询不到的,因此之后还需要手工删除。
(3)、实验演示
SQL> select * from emp1;
--先来看看表中的数据内容
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839 KING PRESIDENT 1981/11/17 5000.00 10
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
7876 ADAMS SALESMAN 7788 1987/5/23 1100.00 20
7900 JAMES CLERK 7698 1981/12/3 950.00 30
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
8000 HYL DBA 7839 5000.00 10
8001 HF DBA 2014/10/3 1
16 rows selected
SQL> alter table emp1 set unused (comm,sal);
--将表中要删除的两列设置为unused
Table altered
SQL> select * from emp1;
--删除两个列后,查询表的数据,你会发现这两个已经无法查看到
EMPNO ENAME JOB MGR HIREDATE DEPTNO
----- ---------- --------- ----- ----------- ------
7369 SMITH CLERK 7902 1980/12/17 20
7499 ALLEN SALESMAN 7698 1981/2/20 30
7521 WARD SALESMAN 7698 1981/2/22 30
7566 JONES MANAGER 7839 1981/4/2 20
7654 MARTIN SALESMAN 7698 1981/9/28 30
7698 BLAKE MANAGER 7839 1981/5/1 30
7782 CLARK MANAGER 7839 1981/6/9 10
7788 SCOTT ANALYST 7566 1987/4/19 20
7839 KING PRESIDENT 1981/11/17 10
7844 TURNER SALESMAN 7698 1981/9/8 30
7876 ADAMS SALESMAN 7788 1987/5/23 20
7900 JAMES CLERK 7698 1981/12/3 30
7902 FORD ANALYST 7566 1981/12/3 20
7934 MILLER CLERK 7782 1982/1/23 10
8000 HYL DBA 7839 10
8001 HF DBA 2014/10/3 1
16 rows selected
SQL> desc emp1;
--即使查看表结构,也不会发现被设置为unused的两个列,因为目前对于数据库而言,这两个列已经是删除的列了
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4) Y
ENAME VARCHAR2(10) Y
JOB CHAR(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y sysdate
DEPTNO NUMBER(2) Y
SQL> alter table emp1 drop unused columns;
--之后手工删除掉emp1表中标记为unused的列的数据
Table altered
***********************************************声明***********************************************************************
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。
深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39758393
****************************************************************************************************************************