create table_tmp as select col newcol,col2,col3…… from table; rename table to table_old; rename table_tmp to table;
爱新觉罗至尊宝 这个方法看上去是简单,但是实际上新建一个表,增加的数据,复制的数据都很大,至少比删除一个列大的多 oraclealter table t1 add(newcol(oldtype) null);--已有记录,新增加列要求是空的,类型同原来的 update t1 set newcol=oldcol; alter table t1 modify(newcol not null);--增加旧列一样的约束条件 --如果不需要旧列,删除之: alter table t1 drop(oldcol)另外的简单解决方案,不用修改任何结构或者移动数据: 1.对列增加注释,使得明白旧列名的意义,用户是不需要知道数据字段名的意义的,程序员只要明白即可,然后出报表的时候再select oldcolname as newname from t1即可. 或者 2.建立一个视图,create view v_t1 as select oldcol as newcol,other1,other2... from t1
create table_tmp as select新建的表仅仅保存了数据和类型,所有的列的约束条件和外码关系全部需要重建,很麻烦的。
select col newcol,col2,col3…… from table;
rename table to table_old;
rename table_tmp to table;
这个方法看上去是简单,但是实际上新建一个表,增加的数据,复制的数据都很大,至少比删除一个列大的多
oraclealter table t1 add(newcol(oldtype) null);--已有记录,新增加列要求是空的,类型同原来的
update t1 set newcol=oldcol;
alter table t1 modify(newcol not null);--增加旧列一样的约束条件
--如果不需要旧列,删除之:
alter table t1 drop(oldcol)另外的简单解决方案,不用修改任何结构或者移动数据:
1.对列增加注释,使得明白旧列名的意义,用户是不需要知道数据字段名的意义的,程序员只要明白即可,然后出报表的时候再select oldcolname as newname from t1即可.
或者
2.建立一个视图,create view v_t1 as select oldcol as newcol,other1,other2... from t1