文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何更改表中列的顺序

如何更改表中列的顺序

时间:2010-11-18  来源:benxiong

在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> /
OBJECT_NAME                     OBJECT_ID
------------------------------ ----------
EMP_COPY                            50555
2.切换到sys帐号下 SQL> conn sys/password as sysdba;
Connected.
SQL> select obj#,col#,name from col$
2 where obj#=50555;
      OBJ#       COL# NAME
---------- ---------- ----------------------------
     50555          1 ID
     50555          2 NAME
     50555          3 DID
Elapsed: 00:00:00.03
SQL>
3. 下面可以通过修改这个系统表来实现修改列名与顺序,注意,COL#就是列的顺序。 UPDATE COL$ SET COL#=2,name='DEPARTID'
WHERE OBJ#=50555 and name='DID';
UPDATE COL$ SET COL#=3,name='ENAME'
WHERE OBJ#=50555 and name='NAME'
4. 再次查询 SQL> select obj#,col#,name from col$
2 where obj#=50555;
      OBJ#       COL# NAME
---------- ---------- ------------------------------
     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          
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载