对于已经建好的表,有时可能因为业务的变动或者设计时考虑的不周全而需要进行列的调整,包
括增加一个新的列、修改一个列、为列定义一个缺省值、删除一个列等。对应语句语法分别如下:
ALTER TABLE table ADD (
column datatype [DEFAULT expr] [,column datatype]);
ALTER TABLE table MODIFY (
column datatype [DEFAULT expr][,columndatatype]);
ALTER TABLE table DROP (column);
1:为表增加一个字段:
ALTER TABLE dept80 ADD(job_id VARCHAR2(9));
说明:给 DEPT80 表增加一个字符型的列 JOB_ID, ADD 子句用于新增列及其完整性约束条件
(关于完整性约束条件将在后面介绍),新增加的字段只能作为表的最后一个字段。
2:修改字段的类型:
ALTER TABLE dept80 MODIFY job_id DATE;
说明: 将刚添加的列 JOB_ID 改为 DATE 类型。
3:修改字段的长度:
ALTER TABLE dept80 MODIFY (last_name VARCHAR2(30));
说明:MODIFY 可以改变列的数据类型、长度、缺省值等。其中缺省值仅影响以后的操作。
4:删除一个字段:
ALTER TABLE dept80 DROP COLUMN job_id;
说明:删除一个列对于大数据量的表来说会消耗相当多的资源,同时会对表中数据进行加锁,
因此删除表中的字段会给系统的使用带来性能上的影响。如果要避免删除列对性能的影
响,我们可以使用下面方法:
使用 SET UNUSED 命令 将需要删除的列设置成为 UNUSED 状态,UNUSED 状态的列对
用户来说类似于被删除,但是数据仍然在表行中存在,但如果发现有问题,该列仍然可
以恢复。语法如下:
ALTER TABLE table SET UNUSED(column) 或者
ALTER TABLE table SET UNUSED COLUMN column;
如果确定删除该列,可以在系统业务非繁忙时间使用命令进行删除:
ALTER TABLE table DROP UNUSED COLUMNS;