oracle 数据库 alter table的用法(经典)

 

      首先说一下最简单的oracle  alter table的命令吧,如下:

       --增加字段  alter table tablename add column fieldname varchar2(2)  或者 alter table tablename add(fieldname clob)
      
       -- 删除字段  alter table tablename drop column fieldname 
      
       -- 修改字段 (修改字段名字) alter table tablename rename column oldfield to newfield

                             (修改字段大小) alter table tablename modify fieldname varchar2(2000)

 


     今天在修改一个表记录中的某个字段的时候,这个表的字段为clob类型,而且数据已经有很多了,我想要把这个clob修改成varchar2(4000)于是我心想这个简单,我就直接用命令 alter table tablename modify filedname varchar2(4000) 心想这也很快就可以结果问题,结果令我一想不到的错误产生,原来不同类型之间需要转换的时候,只操作这也的语句是不行,查了一些资料终于结果问题了,解决命令如下:

       首先要在修改的表中,先新建一个字段: alter table tablename add newfield varchar2(4000);

       其次就是给这个新增的字段赋值(即把原来的clob字段的值给这个新的字段,一个需要特别注意的如果新增的字段中接受的值要是大于4000的话,会移植失效),

       执行命令如下:update tablename set newfield=dbms_lob.substr(oldfield,1,dbms_lob.getLength(oldfield));

       当以上命令执行成功后,查看表是否有数据导入到新的字段中后,然后在drop掉之前的oldfield字段(即clob字段),

       alter table tablename drop column oldfield;

       如果想要把这个新增的字段换成旧字段则要执行:alter table tablename rename column oldfield to newfield ;

   
至此问题解决了!!!      

 

你可能感兴趣的:(SQL)