alter table xxx modify yyy varchar2(2);
创新互联是一家专业从事成都网站制作、网站建设、外贸网站建设的网络公司。作为专业网站设计公司,创新互联依托的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、成都全网营销推广及网站设计开发服务!
其中,xxx 为表名,yyy为列名,最后为要改成的数据类型。
希望可以帮到你
语法是
alter table tablename modify 字段名 类型(长度);
如果是date等类型,则不需要添加长度
用alter语句进行修改。
语法:
1
alter table 表名 modify 字段名 字段类型(字段长度);
说明:如果是date等没有长度的类型,字段长度部分可以省略。
如:目前test表属性如下
要将name列的字段类型改为date类型,可用如下语句:
1
alter table test modify name date;
此时可见name列的类型已经更新成功。
注意事项:
如果表中有数据尽量不要使用此语句,会造成数据丢失,应在备份的情况下进行修改。
因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型 要是没有数据的话直接用以下语句即可 alter table tb_test modify permile number(5,2); 但是有数据的话 就不能用上面方法了, alter table tb_test add permile_temp number(5,2) update tb_test set permile_temp=permile; alter table drop column permile; alter table test rename column permile_temp to permile; 这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响 以下方法是比较好的方法 不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次 如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做 要是不停机的话 ,也可以采用在线重定义方式来做 以下是脚本: alter table tb_test add permile_temp number; Add/modify columns alter table tb_test modify PERMILE null; update tb_test set permile_temp=permile,permile=null; commit; alter table tb_test modify permile number(5,2); update tb_test set permile=permile_temp,permile_temp=null; commit; alter table tb_test drop column permile_temp; alter table tb_test modify PERMILE not null; select * from tb_test ;责任编辑:小草
发现clob类型比较特殊,和其他字段类型不同,不可以从其他字段类型直接转换为clob(blob也一样),可以通过long类型作为中间转换的桥梁,即先将varchar2转换为long,然后再将long转换为clob,即可。
SQL alter table test modify (loc long );
Table altered
SQL alter table test modify (loc clob );
Table altered
2、假设要修改字段有数据,则可以使用以下两种方法;
方法一:
alter table batchintfloadlog rename column resultinfo to resultinfo_temp;
alter table batchintfloadlog add resultinfo clob;
update batchintfloadlog set resultinfo=trim(resultinfo_temp);
alter table batchintfloadlog drop column resultinfo_temp;
方法二:
create table batchintfloadlog_temp as select * from batchintfloadlog where 1=2;
alter table batchintfloadlog_temp modify (resultinfo long);
alter table batchintfloadlog_temp modify (resultinfo clob);
insert into batchintfloadlog_temp select * from batchintfloadlog;
drop table batchintfloadlog;
rename batchintfloadlog_temp to batchintfloadlog;
语句:
alter table tableName rename column oldCName to newCName; -- 修改字段名
alter table tableName modify (cloumnName 数据类型); -- 修改数据类型
例如:
1、创建表:
CREATE TABLE Student(
id varchar2(32) primary key,
name varchar2(8) not null,
age number
);
2、修改字段名:
alter table Student rename column name to StuName;
3、修改数据类型:
alter table Student modify (id varchar2(64));
清醒时做事,糊涂时读书,大怒时睡觉,独处时思考;做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己