Oracle修改表列名与顺序的解决方案
来源:互联网 发布:做广告图片的软件 编辑:程序博客网 时间:2024/06/05 04:59
在Oracle中创建表后,如果想修改表的定义可以使用alter table 命令,但是如果要修改列名或调整列的顺序时,alter table 命令将无能为力。当然可以使用原始办法,[ 通过create table 临时表 as select * from 源表 ],然后把原来的表删除,再重建,然后使用 [ insert into 新表 select 列1,列2 from 临时表 ] 就可以解决了,但是这样做需要有足够大的空间。
下面介绍通过修改数据字典的方法修改表的列名:
假设在 HR帐号下有EMP_COPY 表(ID,NAME,DID),现决定要修改为EMP_COPY(ID,DEPARTID,ENAME)
即修改列名与顺序。
步骤:
即修改列名与顺序。
步骤:
1. 在HR帐号下使用下面命令查询EMP_COPY对象的编号:
SQL>
1 select OBJECT_name,object_id from all_objects
2* where object_name='EMP_COPY'
SQL> /
1 select OBJECT_name,object_id from all_objects
2* where object_name='EMP_COPY'
SQL> /
OBJECT_NAME OBJECT_ID
------------------------------ ----------
EMP_COPY 50555
------------------------------ ----------
EMP_COPY 50555
2.切换到sys帐号下
SQL> conn sys/password as sysdba;
Connected.
SQL> select obj#,col#,name from col$
2 where obj#=50555;
Connected.
SQL> select obj#,col#,name from col$
2 where obj#=50555;
OBJ# COL# NAME
---------- ---------- ----------------------------
50555 1 ID
50555 2 NAME
50555 3 DID
---------- ---------- ----------------------------
50555 1 ID
50555 2 NAME
50555 3 DID
Elapsed: 00:00:00.03
SQL>
SQL>
3. 下面可以通过修改这个系统表来实现修改列名与顺序,注意,COL#就是列的顺序。
UPDATE COL$ SET COL#=2,name='DEPARTID'
WHERE OBJ#=50555 and name='DID';
WHERE OBJ#=50555 and name='DID';
UPDATE COL$ SET COL#=3,name='ENAME'
WHERE OBJ#=50555 and name='NAME'
WHERE OBJ#=50555 and name='NAME'
4. 再次查询
SQL> select obj#,col#,name from col$
2 where obj#=50555;
2 where obj#=50555;
OBJ# COL# NAME
---------- ---------- ------------------------------
50555 1 ID
50555 3 ENAME
50555 2 DEPARTID
---------- ---------- ------------------------------
50555 1 ID
50555 3 ENAME
50555 2 DEPARTID
5. 提交修改
SQL>commit ;
6. 重启服务
SQL> SHUTDOWN IMMEDIATE
SQL>STARTUP
7. 登录HR,查询SELECT * FROM EMP_COPY;
SQL> desc emp_copy;
Name
-----------------------
ID
DEPARTID
ENAME
Name
-----------------------
ID
DEPARTID
ENAME
- Oracle修改表列名与顺序的解决方案
- Oracle修改表列名与顺序的解决方案 (sql 修改列名)
- Oracle 10g 修改表列名与顺序
- oracle数据库修改表列名
- Oracle中修改表列名,用SQL语句的方式
- 如何在数据字典中修改Oracle的表列名
- Oracle中修改表列名,用SQL语句的方式
- oracle中直接修改表列的名称和顺序
- rails 修改表列名
- rails 修改表列名
- MySQL修改表列名
- oracle怎样修改表名、列名、字段类型、添加表列、删除表列
- oracle修改表名、列名、字段类型、添加表列、删除表列
- oracle怎样修改表名、列名、字段类型、添加表列、删除表列
- oracle怎样修改表名、列名、字段类型、添加表列、删除表列
- oracle怎样修改表名、列名、字段类型、添加表列、删除表列、主键和unique
- oracle 修改表名、列名、字段类型、添加表列、删除表列 等相关操作
- oracle怎样修改表名、列名、字段类型、添加表列、删除表列
- 【转载】一位软件工程师的6年总结
- 关于spring的DelegatingActionProxy
- C/C++编码标准(转载)
- 新人
- 生活是调和后的产物(转)
- Oracle修改表列名与顺序的解决方案
- JDBC连接数据库!
- 第一次登陆
- 申请了个号,但没上过几次,以后会天天上的
- j2sdk+tomcat+apche安装与配置
- 嵌入式学习笔记(C和C++嵌入式系統編程)【1】
- 八个DOS命令
- 指针的浅显讲解,仔细看完绝对有帮助
- 如何去掉超链接下划线(转)