假设有:
create or replace table1(a number(10) not null,b varchar2(10));现在我想增加一个字段c varchar2(10)放到a字段与b字段之间,怎办?因为alter table table1 add c varchar2(10),增加的列是放在b之后,但现在我想把其放在b字段之前怎办?

解决方案 »

  1.   

    好像没有什么好办法。
    drop掉,重新create吧。呵呵。
      

  2.   

    oracle中好像不太容易改变字段的位置。在toad或pl/sql工具中只能在查询结果集显示中将字段进行调整,但也不能改变数据在oracle中实际存储的顺序。(事实证明也没有非要把新加的字段插入在某字段之前的必要,很多时候这种问题可以在select的时候手写字段顺序来解决,比如你可以写select a,c,b from table1,而且这种查询效率要优于select * from table1)
    解决的办法一是把建新表,再把原表删掉:
     alter table table1 add c varchar2(10);
     create table table2 as select a,c,b from table1;
     drop table table1;
    办法二是建一个视图,在视图里按自己的意愿排序:
     alter table table1 add c varchar2(10);
     create view table1_view as select a,c,b from table1;
      

  3.   

    怎么说呢,直接的办法没有,间接的办法楼上都给出来了~
    以前用过sql server可以,oracle不可以。
    这个问题对真正的编程没有什么影响!
      

  4.   

    如果是oracle的话,可以到数据字典去改列的顺序
      

  5.   

    在数据字典中直接修改表列的名称和顺序
    http://www.examda.com/oracle/jishu/20070616/091238690.html
      

  6.   

    对于新手,不推荐使用修改数据字典的方式。推荐,DROP --> CREATA方式。可以把数据保存到一个临时表,建立新表以后,导回来。
      

  7.   

    果然是该说的都说了,没什么好说的了。楼主该得到明确答案了吧?Oracle不会那么傻,去做一个没什么实际意义的功能的。