oracle顺序表,oracle中直接修改表列的名称和顺序

本文介绍了如何在Oracle数据库中通过修改数据字典视图来改变表的列顺序和重命名列。首先创建了一个测试表,然后查询了表的列存储位置。接着,通过查询ALL_OBJECTS和SYS.COL$获取表的详细信息,展示了如何调整列的顺序和名称,虽然Oracle理论上认为行和列无序,但在实际应用中有时需要特定的列顺序。
摘要由CSDN通过智能技术生成

导入数据得时候,遇到一个问题,想把列名顺序改变一下。在网上搜索到这篇文章,没去试验。贴上来,以后有机会试验下。

(http://www.im80hou.com/html/oracle/2009/0710/712.html)

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

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

SQL>CREATE TABLE SCOTT.TEST AS SELECT EMPNO,

ENAME from SCOTT.EMP;

SQL>DESC 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.查询表中列的实际存储位置或表。

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

SQL>SELECT 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

&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值