在原有表的基础上生成一张新表,在生成的过程中修改列名,然后DROP掉原来的表,在把表名该回来。
create table New_table as
select Col1,...,in new_col,... from YouTable;
drop table YouTable;
rename New_table to YouTable ;

解决方案 »

  1. 9I: alter table 表 rename column oldcol to newcol;
      

  2. 呵呵,最笨的辦法,
    create table table_a as select * from your_table;
    drop table your_table;
    create table your_table 所有結構和原先一致,把IN欄位改成其他的
    在將表table_a種的數據插入your_table如果版本夠的話,可以直接用rname來更改
      

  3. create newtable as selct col1,col2 as newcol,...
      

  4. codoxo() 的办法可行
    如果数据太大的话.
    也可以直接加一个字段.
    如; alter table tablename add(b varchar2(20));
    然后让新的字段的值等于旧值. 原字段保留.
    update tablename set b=oldcol;
      

  5. 如现有表结构:
    SQL> desc a1;
    名称                         是否为空 类型
    ------------------------------- -------- ----
     ID                                       VARCHAR2(12)
     NUM                                      NUMBER(2)
     D                                        DATE
     SL1                                      NUMBER(4)
     SL2                                      NUMBER(4)
     SL3                                      NUMBER(4)如果需要改sl3列名(就是你的in列),则先建立一个临时表,如b1,数据完全同a1
    SQL> create table b1 as select id,num,d,sl1,sl2,sl4 from a1;
    SQL> desc a1;
    Ãû³Æ                          ÊÇ·ñΪ¿Õ£¿ÀàÐÍ
    ------------------------------- -------- ----
     ID                                       VARCHAR2(12)
     NUM                                      NUMBER(2)
     D                                        DATE
     SL1                                      NUMBER(4)
     SL2                                      NUMBER(4)
     SL4                                      NUMBER(4)最后,删除表a1,重新命表名
    SQL> rename b1 to a1;±íÒÑÖØÃüÃû¡£SQL> desc a1;
    Ãû³Æ                          ÊÇ·ñΪ¿Õ£¿ÀàÐÍ
    ------------------------------- -------- ----
     ID                                       VARCHAR2(12)
     NUM                                      NUMBER(2)
     D                                        DATE
     SL1                                      NUMBER(4)
     SL2                                      NUMBER(4)
     SL4                                      NUMBER(4)
      

  6. 如果把in 改成aa可以如下:
    create table t2 (...,aa,...)as select * from t1;
    drop table t1;
    rename t2 to t1;
      

类似问题 »