链接:http://www.cnblogs.com/david-zhang-index/archive/2012/04/10/2441015.html

对字段操作 操作方法
更新字段名 alter table TABLE_NAME rename column column_old to column_new;
添加字段 alter table TABLE_NAME add COLUMN_NAME varchar(10);
删除字段 alter table TABLE_NAME drop column COLUMN_NAME;
添加字段并附值 alter table TABLE_NAME ADD COLUMN_NAME NUMBER(1) DEFAULT 1;
修改字段值 update TABLE_NAME set filedname=value where filedname=value;
修改字段数据类型 alter table tablename modify filedname varchar2(20);
 SQL> select * from v$version;

 BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

1.修改字段数据类型时,如果该列有数据则报ORA-01439: column to be modified must be empty to change datatype,此时需要通过另外一种方法修改:

 SQL> alter table zyt add id_temp varchar2(10);

 Table altered.

 SQL> commit;

 Commit complete.

 SQL> select * from zyt;

 NAME               ID ID_TEMP
---------- ---------- ----------
zyt1 1
david 2 SQL> alter table zyt rename column id to id_bak; Table altered. SQL> select * from zyt; NAME ID_BAK ID_TEMP
---------- ---------- ----------
zyt1 1
david 2 SQL> desc zyt;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(10)
ID_BAK NOT NULL NUMBER(2)
ID_TEMP VARCHAR2(10) SQL> update zyt set ID_TEMP = cast(ID_BAK as varchar2(10)); 2 rows updated. SQL> commit; Commit complete. SQL> select * from zyt; NAME ID_BAK ID_TEMP
---------- ---------- ----------
zyt1 1 1
david 2 2 SQL> alter table zyt drop column ID_BAK; Table altered. SQL> commit; Commit complete. SQL> select * from zyt; NAME ID_TEMP
---------- ----------
zyt1 1
david 2 SQL> desc zyt;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(10)
ID_TEMP VARCHAR2(10)

备注:这种方法能满足需求,因新增字段默认添加到表末尾,有可能发生行迁移,对应用程序会产生影响,同时也涉及复杂数据,不算最好的方法

2.建立一个中间跳板,临时存储数据

 SQL> desc zyt;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(10)
ID VARCHAR2(10) SQL> select * from zyt; NAME ID
---------- ----------
zyt1 1
david 2 SQL> alter table zyt add id_temp VARCHAR2(10) Table altered. SQL> select * from zyt; NAME ID ID_TEMP
---------- ---------- ----------
zyt1 1
david 2 SQL> update zyt set ID_TEMP=id,id=null; 2 rows updated. SQL> select * from zyt; NAME ID ID_TEMP
---------- ---------- ----------
zyt1 1
david 2 SQL> alter table zyt modify id number(10); Table altered. SQL> desc zyt;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(10)
ID NUMBER(10)
ID_TEMP VARCHAR2(10) SQL> update zyt set id=ID_TEMP,ID_TEMP=null; 2 rows updated. SQL> select * from zyt; NAME ID ID_TEMP
---------- ---------- ----------
zyt1 1
david 2 SQL> alter table zyt drop column ID_TEMP; Table altered. SQL> commit; Commit complete. SQL> select * from zyt; NAME ID
---------- ----------
zyt1 1
david 2 SQL> desc zyt;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(10)
ID NUMBER(10)

备注:第二种方法,是增加一个与被修改的列类型一样的列,之后将要修改列的数据复制到新增的列并置空要修改的列,之后修改数据类型,再从新增列将数据拷贝回来,该过程涉及两次数据复制,如果是数据量很多,会比较慢同时也会产生很多undo和redo;优点是数据不会发生行迁移。

最新文章

  1. 关于闭包(closure)的一些概念
  2. iOS 文件下载
  3. jquery ajax异步请求
  4. s5pv210启动debian出错提示bash: cannot set terminal process group (-1): Inappropriate ioctl for device
  5. 重构Mybatis与Spring集成的SqlSessionFactoryBean(2)
  6. JavaScript Patterns 5.6 Static Members
  7. C#正则表达式编程(四):正则表达式
  8. sdut 1570 c旅行
  9. 只需三步:使用C# 操作 Azure 队列
  10. Google Maps API 调用实例
  11. 【甘道夫】Hive 0.13.1 on Hadoop2.2.0 + Oracle10g部署详细解释
  12. CJOJ 2485 UVa 11991 生日礼物 / UVa 11991 Easy Problem from Rujia Liu?
  13. TLD算法原理--学习理解之(二)
  14. Activity,Window,View之间是什么关系?
  15. SpringCloud分布式微服务搭建(一)
  16. python selenium-webdriver 登录验证码的处理(十二)
  17. shell编程学习笔记(三):Shell中局部变量的使用
  18. Spring是什么 包括SpringBean SpringMVC SpringBoot SpringCloud
  19. JavaScript 设计模式之简介
  20. C#/.NET主线程与子线程之间的关系

热门文章

  1. python传递任意数量的实参
  2. zrender源码分析3--初始化Painter绘图模块
  3. WCF服务编程 读书笔记——第1章 WCF基础(2)
  4. nginx中级应用-续
  5. docker 命令大全
  6. 30.Rotate Image(矩阵旋转)
  7. SFML从入门到放弃(1) 窗口和交互
  8. HTML中特殊字符
  9. Run Faster-JAVA
  10. HTML5 调用百度地图API地理定位