修改Oracle数据库表中的字段的顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了修改Oracle数据库表中的字段的顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2214字,纯文字阅读大概需要4分钟。
内容图文
![修改Oracle数据库表中的字段的顺序](/upload/InfoBanner/zyjiaocheng/552/66eced96c56c4892a15f451a4064f510.jpg)
都说写程序与数据库表字段的顺序没有关系,可是做过实际的项目之后才知道,对于操作数据库的人来说,数据库表的字段顺序可能是很
都说写程序与数据库表字段的顺序没有关系,可是做过实际的项目之后才知道,对于操作数据库的人来说,数据库表的字段顺序可能是很繁琐的,比如需要往表中增加字段,,但不希望把字段放到表的最后。通过用过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的。
这种方法虽然存在一定风险,但对于特别大的表效果是很明显的,而用一般的方法将需要更多的存储空间、回滚段和时间开销。
内容总结
以上是互联网集市为您收集整理的修改Oracle数据库表中的字段的顺序全部内容,希望文章能够帮你解决修改Oracle数据库表中的字段的顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。