在Oracle中,默认情况下,新增的字段都是排在最后的,不能像MySQL 那样在指定位置插入字段,
对于数据量较小的表可以重新建表, 但数据量较大的表就无法这样操作了
下面以WEB_USER 表为例
现有5个字段

select * from WEB_USER;

要新增一个Class 字段 排在Name 字段后面
查询SYS.ALL_OBJECTS 获取OBJECT_ID
select * from SYS.ALL_OBJECTS where OWNER=‘BS’ and OBJECT_NAME=‘WEB_USER’;

利用OBJEC_ID查询字段信息
select * from SYS.COL$ where OBJ#=75650;

修改字段属性
update SYS.COL$ set COL#=3 where OBJ#=75650 and NAME=‘CLASS’; —将 CLASS 字段的 COL# 设置为3,
update SYS.COL$ set COL#=6 where OBJ#=75650 and NAME=‘AGE’; —并将 AGE 字段的 COL# 设置为6
Commit; —更新完之后提交
修改完成后并不会立即生效, 还需要重启Oracle 服务

重启Oracle服务之后


对于包含大量数据的表修改字段顺序需要谨慎操作