oracle修改某表中的顺序,修改Oracle数据库表中的字段的顺序

都说写程序与数据库表字段的顺序没有关系,可是做过实际的项目之后才知道,对于操作数据库的人来说,数据库表的字段顺序可能是很

都说写程序与数据库表字段的顺序没有关系,可是做过实际的项目之后才知道,对于操作数据库的人来说,数据库表的字段顺序可能是很繁琐的,比如需要往表中增加字段,,但不希望把字段放到表的最后。通过用过Oracle的人都知道,要想在ORACLE中更改表的列名和顺序可是一件很烦琐的事,下面给大家提供一种简单的方法。

用SYSTEM登录sqlplus进行操作,因为这需要dba

第一步,从数据字典视图查询出表的id

SQL> select object_id from all_objects where owner='SCOTT' and object_name='T1';

OBJECT_ID

----------

6067

第二步,通过id查出该表中所有字段的顺序

SQL> select obj#,col#,name from sys.col$ where obj#=6067;

OBJ# COL# NAME

--------------------

6067 1 ID

6067 2 NAME

第三步,更新字段的顺序

SQL> update sys.col$ set ,col#=3 where obj#=6067 and;

1 row updated.

SQL> update sys.col$ set,col#=1 where obj#=6067 and;

1 row updated.

SQL> update sys.col$ set col#=2 where obj#=6067 and col#=3;

1 row updated.

SQL> commit;

完成.

SQL> select * from scott.t1;

ID NAME

---------- --------------------

3 cheng

2 yong

1 xin

2 gototop

1 topcio

2 yongxin

1 cyx

7 rows selected.

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 128159368 bytes

Fixed Size 732808 bytes

Variable Size 117440512 bytes

Database Buffers 8388608 bytes

Redo Buffers 1597440 bytes

Database mounted.

Database opened.

SQL> select * from scott.t1;

MY_NAME NEW_ID

-------------------- ----------

cheng 3

yong 2

xin 1

gototop 2

topcio 1

yongxin 2

cyx 1

7 rows selected.

第四步、 重启数据库服务。

由于数据字典是在数据库启动时加载到SQL中的,所以修改了它之后,如果使用“SELECT * FROM SCOTT.TEST; ”,会发现好像并没有修改。因此,修改完成之后,还需要重启数据库服务。

SQL>SHUTDOWN

SQL>STARTUP

这时,再查看,就会发现修改已经成功。

到此为止我们已经把SCOTT.T1表中的列名和顺序都给改了,如果你只想改变顺序而不想改变列名,只需再进行UPDATE就可以了,之所以不能一次完成是因为SYS.COL$中COL#,NAME都是UNIQUE的。

这种方法虽然存在一定风险,但对于特别大的表效果是很明显的,而用一般的方法将需要更多的存储空间、回滚段和时间开销。

logo.gif 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值