如需转载,请注明出处!用过ORACLE的人都知道,要想在ORACLE中更改表的列名和顺序可是一件很烦琐的事,下面给大家提供一种简单的方法。SQL> select object_id from all_objects where owner="SCOTT" and object_name="T1";OBJECT_ID----------6067SQL> select obj#,col#,name from sys.col$ where obj#=6067;OBJ# COL#---------- ----------NAME------------------------------------------------------------6067 1ID6067 2NAMESQL> update sys.col$ set name="NEW_ID" ,col#=3 where obj#=6067 and name="ID";1 row updated.SQL> update sys.col$ set name="MY_NAME",col#=1 where obj#=6067 and name="NAME";1 row updated.SQL> update sys.col$ set col#=2 where obj#=6067 and col#=3;1 row updated.SQL> commit;Commit complete.SQL> select * from scott.t1;ID NAME---------- --------------------3 cheng2 yong1 xin2 gototop1 topcio2 yongxin1 cyx7 rows selected.SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 128159368 bytesFixed Size 732808 bytesVariable Size 117440512 bytesDatabase Buffers 8388608 bytesRedo Buffers 1597440 bytesDatabase mounted.Database opened.SQL> select * from scott.t1;MY_NAME NEW_ID-------------------- ----------cheng 3yong 2xin 1gototop 2topcio 1yongxin 2cyx 17 rows selected.到此为止我们已经把SCOTT.T1表中的列名和顺序都给该了,如果你只想改变顺序而不想改变列名,只需再进行UPDATE就可以了,之所以不能一次完成是因为SYS.COL$中COL#,NAME都是UNIQUE的。这种方法虽然存在一定风险,但对于特别大的表效果是很明显的,而用一般的方法将需要更多的存储空间、回滚段和时间开销。