当前位置:  数据库>oracle

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

    来源: 互联网  发布时间:2017-04-10

    本文导语: 都说写程序与数据库表字段的顺序没有关系,可是做过实际的项目之后才知道,对于操作数据库的人来说,数据库表的字段顺序可能是很繁琐的,比如需要往表中增加字段,但不希望把字段放到表的最后。通过用过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 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;

完成.

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的。

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


    
 
 

您可能感兴趣的文章:

  • 要修改ip报文的TOS字段请问怎么做呀?
  • 一条SQL语句修改多表多字段(多表更新)
  • 求助文件操作中修改文件中字段的问题,请大家帮忙解决
  • mysql 增加修改字段类型及删除字段类型
  • sql修改字段长度(练习)
  • Linux下如何修改dbf字段值?
  • 在linux中如何修改带vlan标签的报文的vlan字段?
  • mssql对已创建表的某个字段修改为默认值
  • 修改MySQL数据库中表和表中字段的编码方式的方法
  • 一条SQL语句修改多表多字段的信息的具体实现
  • sql 添加删除修改字段的方法介绍
  • sql server中添加字段、删除字段、修改字段说明
  • Oracle触发器修改同一表不同字段
  • sqlserver对字段的添加修改删除、以及字段的说明
  • MySQL数据表字段内容的批量修改、清空、复制等更新命令
  • 动态给表添加删除字段并同时修改它的插入更新存储过程
  • sql实现修改表字段名的方法详解
  • 有关sql修改表字段名的方法
  • 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
  • SQL语句添加、删除、修改字段方法大全
  • 如何修改Linux系统服务启动顺序
  • 如何保证 .properties 文件修改后的参数顺序与原来一样
  • 修改启动顺序,目前是第一个,我怎么修改后,使启动的默认为Windows 2000
  • 如何修改启动菜单的启动顺序(linux,windows),我想让系统默认启动到windows.谢谢!!
  • 无法启动。xp,opensuse双系统,suse中修改了系统启动顺序,机器无法启动了,提示no operating system
  • 如何修改启动菜单的启动顺序(linux,windows2000),我想让系统默认启动到windows2000.谢谢!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 对数据库的查询结果resultset进行修改后,怎么将修改的信息传回给数据库
  • sql数据库多用户模式修改方法
  • 修改数据库为多用户模式
  • sql数据库如何查询修改数据库恢复模式?
  • sql 批量修改数据库表
  • 数据库修改历史记录工具 dbdeploy
  • sql数据库修改数据库用户
  • 新手:用WEB页面修改数据库中的表?
  • mysql字符集和数据库引擎修改方法分享
  • 修改数据库文件及日志文件增量的sql语句
  • 如何修改mysql数据库的max_allowed_packet参数
  • mysql数据库修改数据表引擎的方法
  • 使用phpMyAdmin修改MySQL数据库root用户密码的方法
  • 急!!!!servlet修改数据库后如何commit
  • 请有经验的朋友给个思路,关于通过ejb修改数据库记录。100分送上!bow
  • centos mysql 修改数据库目录
  • SqlServer修改数据库文件及日志文件存放位置
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • mysql修改数据库编码(数据库字符集)和表的字符编码的方法
  • 高手帮帮忙!!! 在线等!!outlook的附件修改且保存后,再次打开发现是修改之前的原件 iis7站长之家
  • 修改Windows硬盘分区名称
  • unix 下 C++实现 ftp 到另一台主机上 修改文件内容 !能不能直接在主机上修改 还是只能get下来本地修改完后 在put上去
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 高手帮帮忙!!! 在线等!!outlook的附件修改且保存后,再次打开发现是修改之前的原件
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 修改ip地址的话应该修改/ect下哪个文件里的内容?
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 原密码被人恶意修改,如何修改suse系统的超级用户密码(急)
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 有什么命令可以修改整个目录下文件的最后修改时间?
  • 通过docker commit命令保存对docker容器的修改


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3