在数据字典中直接修改表列的名称和顺序

2016-01-29 14:41 8 1 收藏

在数据字典中直接修改表列的名称和顺序,在数据字典中直接修改表列的名称和顺序

【 tulaoshi.com - Oracle教程 】

按照关系数据库的理论,行与列都是无序的,但在实际应用中有时需要确定列的顺序。但在Oracle中,一旦表定义好,再想修改列的顺序可不太容易。

Oracle数据库没有提供直接修改表中列名称的功能,但在实际使用时常需要修改表的列名和列顺序,不得已有些Oracle的使用人员用重新创建一个新的具有正确列名和顺序的数据库表,再将旧表的数据转储进来,最后删除旧表并将新表重命名为旧表的方法来完成此功能。此方法的最大问题是要求有双倍的存储空间、较大的回滚段和较长的时间,如果表中数据量较大,这项工作开销会很大。实际上我们可以从数据字典中直接修改表列的名称和顺序。下面是具体的实现步骤:

1.以internal用户名登录Oracle数据库,并创建一测试表。

SQLCREATE TABLE SCOTT.TEST AS SELECT EMPNO,ENAME FROM SCOTT.EMP; SQLDESC SCOTT.TEST Name Type Nullable Default Comments ------- ------------ ------- EMPNO NUMBER(4) Y ENAME VARCHAR2(10) Y

下面我们要把SCOTT.TEST表中EMPNO和ENAME两列调换顺序,并把ENAME列更名为EMP_NAME,EMPNO改为EMP_NO。

2.查询表中列的实际存储位置或表。

SQLSET LONG 9999,由于TEXT列是LONG类型,只有“SET”之后才能完全显示。

SQLSELECT TEXT FROM ALL_VIEWS WHERE VIEW_NAME = ‘USER_TAB_COLUMNS’;

数据字典视图USER_TAB_COLUMNS中存储有表列的定义信息,从该语句的查询结果可以看出,列定义信息是存储在表SYS.COL$中的,即如果修改表中列的定义,应该在SYS.COL$表中修改。

3.从数据字典视图ALL_OBJECTS中查找对象SCOTT.TEST对象ID。

SQL SELECT * FROM ALL_OBJECTS WHERE OWNER =‘SCOTT’ AND OBJECT_NAME=‘TEST’;

4.根据SCOTT.TEST对象的ID,从SYS.COL$检索出表中列的定义信息。

SQL SELECT OBJ#,COL#,NAME FROM SYS.COL$ WHERE OBJ# =13888; OBJ# COL# NAME ---------- ---------- ------- 13888 1 EMPNO 13888 2 ENAME

5.使用Update语句来进行修改。

UPDATE SYS.COL$ SET COL# = 2,NAME=‘EMP_NO’ WHERE OBJ# = 13888 AND NAME=‘EMPNO’; UPDATE SYS.COL$ SET COL# = 1,NAME=‘EMP_NAME’ WHERE OBJ# = 13888 AND NAME =‘ENAME’; COMMIT;

6. 重启数据库服务。

由于数据字典是在数据库启动时加载到SQL中的,所以修改了它之后,如果使用“SELECT * FROM SCOTT.TEST; ”,会发现好像并没有修改。因此,修改完成之后,还需要重启数据库服务。

SQLSHUTDOWN SQLSTARTUP

这时,再查看,就会发现修改已经成功。

来源:http://www.tulaoshi.com/n/20160129/1493955.html

延伸阅读
标签: SQLServer
  使用ODC文档 使用一个ODC文档可以很轻松在IE浏览器中连接到SQL SERVER数据库的表,ODC文档示例如下: <html <head <meta http-equiv=Content-Type content="text/x-ms-odc; charset=utf-8" <meta name=ProgId content=ODC.Table <meta name=SourceType content=OLEDB <meta name=Catalog content=K0712 <...
通常,宝宝会在6-7个月大时开始发“牙”,历时约两年。但是第一颗牙齿萌出的时间差异比较大,或早或晚。那么,幼儿长牙时间和顺序你了解吗?在这个阶段,妈妈应该如何护理?另外,大家还需警惕幼儿长牙常见的几种异常情况。 幼儿长牙时间和顺序...
写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里设计达人网总结一个CSS书写规范、CSS书写顺序供大家参考,这些是参考了国外一些文章以及我的个人经验总结出来,我想对写CSS的前端用户来说是值得学习的。 CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2....
标签: MySQL mysql数据库
如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。 本文概述:  在mysql中建立一个新的数据库  一个怎样储存文件的例子程序  一个怎样访问文件的例子程序  在mysql中建立一个新的databas...
标签: Web开发
在Foxmail中直接查看HTML格式邮件 打开HTML格式的邮件,您可以看到邮件预览框右上方出现手指图标和地球图标,点击地球图标,可以切换显示邮件的文本内容或者HTML内容。 另外,通过“帐户”菜单进入“属性”对话框,选择“字体与显示”,选中“使用嵌入式IE浏览器显示HTML邮件”复选项,Foxmail将自动显示邮件的HTML部分内容。

经验教程

84

收藏

5
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部