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. BIND的进阶二:视图,日志,转发,子域的授权

    实验分为4部分组成: 1:DNS的转发   2:DNS日志     3:子域的授权 4:智能DNS的简单配置根据网段来分配不同的ip地址 一:DNS的转发: 转发方式有两种:only (直接把客户端请 ...

  2. (49) odoo context操作

    * context  这是一个上下文,运用很灵活 * 得到整个context  V7  context=dict(context or {})  这个版本是明传  V8   self.context_ ...

  3. Mybatis + Mysql 插入数据时中文乱码问题

    近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱 ...

  4. Ubuntu搭建svn服务器

    一,安装必须的软件包. sudo apt-getinstall subversion 二,基本的SVN服务器配置        1,新建一个目录用于存储SVN所有文件                # ...

  5. canvas绘图

    1.//获取canvas容器var can = document.getElementById('canvas');//创建一个画布var ctx = can.getContext('2d');2.绘 ...

  6. idea安装

  7. PHP 文件包含总结 include require 命名空间 autoload spl_autoload_register 读取文件路径

    总结: 1. include或require包含其他文件 使用./或者 ../,这里的当前路径和上一层路径,取决于运行脚本的路径,会存在如下问题. 在写PHP程序时,经常要用到include或requ ...

  8. Tableau修改参考线上显示的标签

    修改Tableau中参考线上的标签显示内容,如下图所示:可根据自定义调整

  9. Linux下搭建DNS服务器

    1. 安装需要的软件 由于实验过程是在自己电脑进行的,所以需要安装bind bind-chroot,以下为安装过程. 图1-1 安装bind 图1-2 安装bind-chroot 2.修改DNS主配置 ...

  10. 一个网络传输框架——zeroMQ 调研笔记

    一.它是什么 zeroMQ,一个处理消息传输的库,重点在传输上,看起来它像是在socket上面封装了一层,让我们可以很容易的利用它来做N对M的数据传输,在分布式系统中很方便,在接收端它有round-r ...