1. 增加列
1-1. 增加列
alter table t add col1 int;
alter table t add (col1 int, col2 varchar2(10));
1-2. 增加列时设置约束
# 此处增加的默认值会修改已存在数据行中的此列的值
alter table t add (col1 int, col2 varchar2(10) default 'dummy' not null);
2. 修改列
2-1. 修改列
alter table t modify col1 varchar2(10);
alter table t modify (col1 varchar2(10), col2 int);
2-2. 修改列时设置约束
alter table t modify (col1 varchar2(10), col2 int default 1);
2-3. 修改列时删除默认值约束
# 此处修改的默认值不会修改已存在数据行中的此列的值
alter table t modify col1 varchar2(10) default null);
2-4. 修改列名
alter table t rename column col1 to col2;
3. 删除列
3-1. 删除列
# 不能删除 sys 用户表的列, 大表需要较长时间
alter table t drop col1;
alter table t drop (col1,col2);
# 选项???
cascade constraint invalidate
4. 无效化/隐藏列
# 速度快, 立即返回, 无法恢复
alter table t set unused column col1 cascade constraints;
select owner,table_name,column_name,hidden_column from dba_tab_cols where table_name = 'T';
# 大表需要较长时间
alter table scott.t drop unused columns;
1-1. 增加列
alter table t add col1 int;
alter table t add (col1 int, col2 varchar2(10));
1-2. 增加列时设置约束
# 此处增加的默认值会修改已存在数据行中的此列的值
alter table t add (col1 int, col2 varchar2(10) default 'dummy' not null);
2. 修改列
2-1. 修改列
alter table t modify col1 varchar2(10);
alter table t modify (col1 varchar2(10), col2 int);
2-2. 修改列时设置约束
alter table t modify (col1 varchar2(10), col2 int default 1);
2-3. 修改列时删除默认值约束
# 此处修改的默认值不会修改已存在数据行中的此列的值
alter table t modify col1 varchar2(10) default null);
2-4. 修改列名
alter table t rename column col1 to col2;
3. 删除列
3-1. 删除列
# 不能删除 sys 用户表的列, 大表需要较长时间
alter table t drop col1;
alter table t drop (col1,col2);
# 选项???
cascade constraint invalidate
4. 无效化/隐藏列
# 速度快, 立即返回, 无法恢复
alter table t set unused column col1 cascade constraints;
select owner,table_name,column_name,hidden_column from dba_tab_cols where table_name = 'T';
# 大表需要较长时间
alter table scott.t drop unused columns;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22558114/viewspace-1122576/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22558114/viewspace-1122576/