`
hb_keepmoving
  • 浏览: 226719 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle修改表列名与顺序的解决方案 (sql 修改列名)

阅读更多
Oracle 10g 修改表列名与顺序的解决方案- 下面介绍通过修改数值字典的方法修改表的列名:
 
 假设在 SCOTT帐号下有HB_TEST 表:
--------------------------------------------------------------------

--目的:调换STU_ID和STU_NAME的顺序;并把STU_ID 改为S_ID;
SQL>SELECT * FROM HB_TEST;

/**
    STU_ID STU_NAME   CRO_NAME        GRADE
---------- ---------- ---------- ----------
         1 张三       语文               68
         2 李四       语文               88
         3 王五       语文               72
         4 小张       语文               65
         1 张三       数学               90
         2 李四       数学               62
         3 王五       数学               94
         4 小张       数学               75
         1 张三       物理               50
         2 李四       物理               60
         3 王五       物理               70
         4 小张       物理               80
*/

--第一步:

SQL>select OBJECT_name,object_id from all_objects
    2 where object_name='HB_TEST';

/**

OBJECT_NAME                     OBJECT_ID
------------------------------ ----------
HB_TEST                             49214

*/

--第二步:切换到sys帐号下

SQL>conn / as sysdba;

--第三步:

SQL>select obj#,col#,name from col$ where obj#=49214;

/**
      OBJ#       COL# NAME
---------- ---------- ----------
     49214          1 STU_ID
     49214          2 STU_NAME
     49214          3 CRO_NAME
     49214          4 GRADE   
*/

--第四步: 下面可以通过修改这个系统表来使成为事实修改列名与顺序,注意,COL#就是列的顺序。

SQL>UPDATE COL$ SET COL#=2,name='S_ID'
   2 WHERE OBJ#=49214 and name='STU_ID';

/**
     OBJ#       COL# NAME
--------- ---------- ---------
    49214          2 S_ID
    49214          2 STU_NAME
    49214          3 CRO_NAME
    49214          4 GRADE
*/

--再更新STU_NAME 的col# 的值;

SQL>UPDATE COL$ SET COL#=1,name='STU_NAME'
    2 WHERE OBJ#=49214 and name='STU_NAME';
 
--第五步:再次查询

SQL>select obj#,col#,name from col$ where obj#=49214;

/**
      OBJ#       COL# NAME
--------- ---------- --------
    49214          2 S_ID
    49214          1 STU_NAME
    49214          3 CRO_NAME
    49214          4 GRADE
*/  
   
--第六步:提交修改

SQL>commit;

--第七步: 重启服务

SQL>SHUTDOWN IMMEDIATE; --关闭
SQL>STARTUP;     --开启

--第八步:登录SCOTT账号,查询

SQL>SELECT * FROM HB_TEST;

/**

STU_NAME         S_ID CRO_NAME        GRADE
---------- ---------- ---------- ----------
张三                1 语文               68
李四                2 语文               88
王五                3 语文               72
小张                4 语文               65
张三                1 数学               90
李四                2 数学               62
王五                3 数学               94
小张                4 数学               75
张三                1 物理               50
李四                2 物理               60
王五                3 物理               70
小张                4 物理               80

*/

--第九步:查看表结构

SQL>desc HB_TEST;

/**
名称
--------------
STU_NAME
S_ID
CRO_NAME
GRADE
*/


--------------------------------------------------------------------
还有一种方法:

  如果创建表好了后,想修改表的定义可以使用alter table 命令,但是如果要修改列名或调整列的顺序时,alter table 命令将无能为力。当然可以使用原始措施,通过(create table 临时表 as select * from 源表 ),之后把原来的表删除,再重修,之后使用  (insert into 新表 select 列1,列2 from 临时表 ) 就能够处理完成了,但是这样做需要有足够大的空间。
分享到:
评论

相关推荐

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    12.4 与应用特点相匹配的解决方案 348 12.4.1 压缩索引 348 12.4.2 基于函数的索引 350 12.4.3 反转键索引 353 12.4.4 降序索引 354 12.5 管理问题的解决方案 355 12.5.1 不可见索引 355 12.5.2 虚拟索引 ...

    SQL 优化原则

    ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表...

    经典SQL语句大全

    注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 ...

    数据库操作语句大全(sql)

    数据库操作语句大全(sql) 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_...

    sql经典语句一部分

    经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice ...

    C#编程经验技巧宝典

    2 <br>0003 设置程序代码行序号 3 <br>0004 开发环境全屏显示 3 <br>0005 设置窗口的自动隐藏功能 3 <br>0006 根据需要创建所需解决方案 4 <br>0007 如何使用“验证的目标架构”功能 4 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    每个实例都是经过笔者精心筛选的,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。 本书两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;本书实例来源...

Global site tag (gtag.js) - Google Analytics