oracle修改表字段顺序三种方式:

oracle修改表字段顺序三种方式:

1、最简单粗暴的一种方式:重建表

–备份目标表数据:

CREATE TABLE TABLE_TEMP_NAME AS SELECT * FROM TABLE_NAME;

–删除目标表

DROP TABLE TABLE_NAME;

–按照目标顺序重建表

CREATE TABLE TABLE_NAME (COLUMN1,COLUMN2,…);

–还原数据

INSERT INTO TABLE_NAME SELECT COLUMN1,COLUMN2(新顺序) FROM TABLE_TEMP_NAME;

2、需要开通DBA权限,最好通过sysdba登录:修改sys的数据字典

–查出表所对应的OBJECT_ID

–DBA用户使用
SELECT OBJECT_ID FROM ALL_OBJECTS WHERE OWNER=‘OWNER_NAME’ AND OBJECT_NAME=‘TABLE_NAME’;
–表归属用户可以使用
SELECT OBJECT_ID FROM OBJ WHERE OBJECT_NAME=‘TABLE_NAME’;

–通过ID查出该表所有字段的顺序
SELECT OBJ#,COL#,NAME FROM SYS.COL$ WHERE OBJ#=OBJECT_ID ORDER BY COL#;

–更新SYS.COL$的COL#列的值,需要有DBA权限

UPDATE SYS.COL$ SET COL#=NEW_PLACE_NUM WHERE OBJ#=OBJECT_ID AND NAME=‘COLUMN_NAME’;

–需要调整所有受影响的列的COL#的值

–提交事务

commit;

–需重启oracle服务,才能生效。

3、此功能12C才支持:通过修改列属性来实现

–将涉及调整顺序的字段列的属性修改为INVISIBLE

ALTER TABLE TABLE_NAME MODIFY( COLUMN1 INVISIBLE, COLUMN2 INVISIBLE, COLUMN3 INVISIBLE);

–此时通过第2种方式中的方式查询标志字段顺序,可以看出已经修改为INVISIBLE的列的COL#列的值为空了,DESC TABLE_NAME也看不到修改为INVISIBLE的列了

–按照新的顺序将表字段的列更新为VISIBLE

ALTER TABLE TABLE_NAME MODIFY( COLUMN3 VISIBLE, COLUMN2 VISIBLE, COLUMN1 VISIBLE);

–此时再查看表字段的顺序已经调整好了

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

encoding-console

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值