设为首页 加入收藏

TOP

SQL_修改表结构(四)
2015-07-24 12:15:31 来源: 作者: 【 】 浏览:237
Tags:SQL_ 修改 结构
了高峰期后,再手工使用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

****************************************************************************************************************************

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PostgreSQL操作-psql基本命令 下一篇[Oracle]-性能优化工具(2)-ASH

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: