1.更改列名

alter table TABLE_NAME rename column COLUMN_OLD COLUMN_NEW;

2.添加列

alter table TABLE_NAME add COLUMN_NAME data_type default DEFAULT_VALUE;

3.删除列

alter table TABLE_NAME drop column COLUMN_NAME;

4.修改列的数据类型

如果只是单纯的把列的长度改大,比如VARCHAR2(200)-->VARCHAR2(4000),可直接修改。

alter table TABLE_NAME modify(COLUMN_NAME varchar2(4000));

如果要改变该列的数据类型且该列有数据,再用上面这种方式就会报ORA-01439: column to be modified must be empty to change datatype这个ERROR,需要通过另外一种方式来解决。

alter table TABLE_NAME add TMP_COLUMN datatype;
update TABLE_NAME set TMP_COLUMN = COLUMN_NAME;
alter table TABLE_NAME drop column COLUMN_NAME;
alter table TABLE_NAME rename TMP_COLUMN to COLUMN_NAME;

这种方法能满足需求,但是会使列名发生变化,而且字段顺序有所改变(新增字段默认添加到表末尾,有可能发生行迁移,对应用程序会产生影响)

下面这种方式既不用使列名发生变化,也不会发生表迁移。

alter table TABLE_NAME add TMP_COLUMN datatype;--增加临时列
update TABLE_NAME set TMP_COLUMN = COLUMN_NAME, COLUMN_NAME = null;--将数据挪到临时列,并将该列置空
commit;
alter table TABLE_NAME modify COLUMN_NAME datatype;--修改该列的数据类型
update TABLE_NAME set COLUMN_NAME = TMP_COLUMN, TMP_COLUMN = null;--将保存在临时列的数据移过来,并将临时列置空
alter table TABLE_NAME drop column TMP_COLUMN;--删除临时列
alter table TABLE_NAME modify COLUMN_NAME not null;--设置该列不能为空

但是,这种方法的缺点是表要更新两次,而且当如果数据量较大时,产生的undo和redo也更多,前提也是要停机才进行操作,如果不停机 ,也可以采用在线重定义方式来做。

Oracle对列的操作总结的更多相关文章

  1. oracle数据库列的操作

    本章和大家分享一下如何在数据库中进行列的一些相关操作. 1.增加列名 (我们先来看一个原始版本) 下面我们增加一个列名tel  记住,增加列时需要把列对应的数据类型要说明,不然会报错. alter t ...

  2. 转--Oracle 审计和测试操作

    http://blog.itpub.net/21605631/viewspace-759640/转 Oracle 审计和测试操作 :: 分类: Linux 1.1 相关参数 AUDIT_SYS_OPE ...

  3. jQuery动态对表格Table进行添加或删除行以及修改列值操作

    jQuery,不仅可以以少量的代码做很多操作,而且兼容性好(各种浏览器,各种版本). 下面用jQuery动态对表格Table进行添加或删除行以及修改列值操作 1.jQuery代码 <script ...

  4. Oracle一列的多行数据拼成一行显示字符

    Oracle一列的多行数据拼成一行显示字符   oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数.    www.2cto.com   先介绍:WMSYS.WM_CO ...

  5. shiro进行散列算法操作

    shiro最闪亮的四大特征:认证,权限,加密,会话管理 为了提高应用系统的安全性,这里主要关注shiro提供的密码服务模块: 1.加密工具类的熟悉 首先来个结构图,看看shiro提供了哪些加密工具类: ...

  6. linux --> VIM的列编辑操作

    VIM的列编辑操作   一.删除列 1.光标定位到要操作的地方. 2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行. 3.d 删除.   二.插入列 插入操作的话知识稍有区别.例如在每一行 ...

  7. [转]python中pandas库中DataFrame对行和列的操作使用方法

    转自:http://blog.csdn.net/u011089523/article/details/60341016 用pandas中的DataFrame时选取行或列: import numpy a ...

  8. Oracle日常运维操作总结-数据库的启动和关闭

    下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指出). 一.数据库的启动和关闭 1.1 ...

  9. Oracle数据文件转移操作

    由于oracle表空间数据文件规划问题导致当前数据文件所在文件系统空间不足,当其他文件系统空间充足情况下,可将数据文件移动到空间充足的文件系统下.本文主要描述Oracle表空间数据文件移动的操作步骤. ...

随机推荐

  1. Unity3d调用iOS陀螺仪

    How to write gyroscope controller with Unity3d http://blog.heyworks.com/how-to-write-gyroscope-contr ...

  2. 机器学习实战knn

    最近在学习这本书,按照书上的实例编写了knn.py的文件,使用canopy进行编辑,用shell交互时发现运行时报错: >>> kNN.classify0([0,0],group,l ...

  3. 设置默认python模块源

    可以在Linux编辑~/.pip/pip.conf或者在Windows下编辑%HOME%\pip\pip.ini,内容如下:[global]index-url = http://pypi.douban ...

  4. Oracle中DBLink的使用

    DBLink 的作用是在局域网内,通过一台服务器上面的数据库访问另外一台服务器上面数据库的功能. 下面简单的介绍DBLink的配置: 服务器A:IP 10.10.10.107, 数据库实例名:orcl ...

  5. VS2013 破解

    密钥 : BWG7X-J98B3-W34RT-33B3R-JVYW9

  6. 使用MLeaksFinder检测项目内存泄露总结

    前几天看到开源工具MLeaksFinder,决定用在公司的项目中试一下,效果很不错,用法也很简单,直接把项目文件夹拖到项目中就可以了,依靠这个项目,我发现公司项目中有不少内存泄露的地方,在此总结一下: ...

  7. 楼盘信息sq

    ID:1 楼盘名称:帝豪国际 网址:http://shangqiu.jiwu.com/loupan/239023.html 价格:2500元/平米 关注人数:497 地址:长寿大道南段 情况:在售 大 ...

  8. Traveling in Blade & Soul

    Traveling in Blade & Soul Walking is too simple. Having trained their physics and spirits for ye ...

  9. Java中使用二重循环打印沙漏图形

    1.首先判断外层,A .B.C.D都符合条件 2.那么再看内层 A :int i=0;i<5;i++ 当i=1时;带入到第二个内层循环中 int j=0;j<Math.abs(i)*2+1 ...

  10. range()和xrange()

    range(): range([start,] stop[, step]) 如: range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] range()默认起始点为0 且ra ...