2012年8月14日火曜日

[基础知识] 对表列的操作

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;

0 件のコメント:

コメントを投稿