`
tree_161219
  • 浏览: 87787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

整理:Oracle 修改字段类型

阅读更多
1,如果只是单纯的把字段改大,比如numeric (16,2)--->numeric  (16,4) ,可直接
    alter table 表名 modify (   字段名     numeric               (16,4)

2,由于需求变动,现要将一个类型NUMBER(8,2)的字段类型改为 char。
大体思路如下:
      将要更改类型的字段名改名以备份,然后添加一个与要更改类型的字段名同名的字段(原字段已经改名),然后更新数据,最后删除改名备份的字段。

以下操作在 Oracle 10.2.0.1.0 中通过。

/*修改原字段名*/
ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;
/*添加一个和原字段同名的字段*/
ALTER TABLE 表名 ADD 字段名  VARCHAR2(30);
/*
将原来的数据更新到新字段中
这是要注意,一定要显示进行数据类型转换(不同于MSSQL)
*/
UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30));
/*删除原来的备份字段*/
ALTER TABLE 表名 DROP COLUMN 字段名1;


其他方案:

今天公司因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型

要是没有数据的话直接用以下语句即可

alter   table  tb_test  modify permile  number(5,2);

但是有数据的话 就不能用上面方法了,

alter table tb_test add permile_temp number(5,2)

update tb_test set  permile_temp=permile;

alter table drop column permile;

alter  table test rename column  permile_temp to permile;

这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响

以下方法是比较好的方法

不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次

如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做

要是不停机的话 ,也可以采用在线重定义方式来做

以下是脚本:

alter table tb_test  add permile_temp number;
-- Add/modify columns
alter table  tb_test  modify PERMILE null;
update  tb_test  set permile_temp=permile,permile=null;
commit;
alter table  tb_test  modify permile number(5,2);
update  tb_test  set permile=permile_temp,permile_temp=null;
commit;
alter table  tb_test  drop column permile_temp;
alter table  tb_test  modify PERMILE not null;
select * from  tb_test ;
分享到:
评论

相关推荐

    [整理版]oracle数据类型及存储方式.doc

    Oracle 提供了多种数据类型以适应各种不同类型的变量和字段。以下是对这些数据类型和存储方式的详细解释: **一、字符类型** 1. **CHAR**: CHAR 是固定长度的字符串类型,指定的长度内存储数据,不足的部分会用...

    oracle语法大全 个人整理

    以下是一些关于Oracle语法和个人学习整理的关键知识点: 1. **初始口令**:Oracle安装完成后,预设了一些默认的系统用户及其口令,例如: - internal/oracle - sys/change_on_install - system/manager - scott...

    oracle常用问题解答

    **解答**: Oracle支持多种数据类型,包括数值类型(NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)、LOB类型(BLOB, CLOB)等。 - **示例**: 创建包含不同数据类型的表: ```sql CREATE TABLE example_table ( ...

    ORACLE数据库资料整理【经典】

    3. **表设计**:表是数据库的基础,设计时要考虑字段类型、主键、索引、约束等。**表空间设计**是为表分配存储空间的策略,可以根据不同需求设置不同的表空间,如用户数据、临时数据等。**表分区设计**则用于优化...

    oracle基础知识整理

    `create table` 创建新表,`alter table` 添加、修改或删除字段,`rename` 改变字段或表名,`drop table` 删除表。`create table as select` 直接从查询结果创建新表。 4. 数据操纵语言(DML):DML涉及数据的插入...

    oracle学习笔记.rar

    4. **表的创建与管理**:在Oracle中,通过CREATE TABLE语句创建表,指定字段名、数据类型、约束条件等。约束条件包括NOT NULL(非空)、UNIQUE(唯一)、PRIMARY KEY(主键)、FOREIGN KEY(外键)等。 5. **索引**...

    oracle基础笔记整理

    - 添加字段:ALTER TABLE 表名 ADD COLUMN 字段名 数据类型; - 删除字段:ALTER TABLE 表名 DROP COLUMN 字段名; - 添加字段并赋值:ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 DEFAULT 值; - 修改字段...

    Oracle知识点整理

    以下是对Oracle知识点的详细整理: 1. **表**:表是Oracle数据库的基本单位,由行和列组成,用于存储数据。建表时可以设置各种约束,如 PRIMARY KEY(主键)、FOREIGN KEY(外键)、UNIQUE(唯一性)、CHECK(检查...

    Mysql迁移到Oracle一些需要注意的事项和方案

    - **空字符处理**:Oracle不允许非空字段为空,迁移时需检查并替换NULL或空字符。 - **字符串比较**:Oracle的`LIKE`操作不使用索引效率低,建议使用`instr()`函数提高查询速度。 7. **其他注意事项**: - 数据...

    oracle-MySQL笔记整理资料 适合初学者

    4. 表与索引:理解表结构、字段类型、主键、外键以及如何创建和管理索引。 5. 数据库安全管理:用户权限、角色管理、审计和备份恢复策略。 6. 高级特性:如分区、物质化视图、游标、事务管理和并发控制。 MySQL则是...

    Oracle学习资料 自己整理的

    从给定的文件标题“Oracle学习资料 自己整理的”以及描述“从OCA到OCP内容,常用的命令和使用方法,技巧等”,我们可以提炼出一系列关于Oracle数据库管理与操作的关键知识点,涵盖从初级到高级的技能提升路径。...

    Oracle数据库入门学习课件ppt

    以下是根据提供的PPT文件名称和描述整理出的核心知识点: 1. **数据库基础知识**: - 数据库的概念:存储和管理数据的系统。 - 关系型数据库:以表格形式存储数据,支持SQL查询语言。 - Oracle数据库的特点:高...

    Oracle开发技术--整理

    - 主键(Primary Key):作为表中唯一标识一条记录的字段,其值通常不可更改。 - 外键(Foreign Key):参照另一个表或同一表的主键或唯一键,确保数据的引用完整性,外键的值需与主键匹配或为空。 2. **数据库...

    ORACLE forms开发整理

    在Oracle Forms的开发环境中,Oracle Developer Suite 10g是一个关键组件,它是一个全面的集成开发环境(IDE),集成了多种工具,如Oracle JDeveloper、Oracle Reports、Oracle Forms、Oracle Discoverer、Oracle ...

    Oracle命令(自己整理)

    - `desc`:描述表结构,显示字段名、数据类型等信息。 - `show user`:查看当前连接的用户。 - `set pagesize`:设置每页显示的记录数。 - `set linesize`:设置每行的最大字符数。 2. 数据查询与操作: - `...

    ORACLE ebs FORM开发中form个性化处理

    例如,可以通过Form Pers隐藏某些对特定用户不相关的字段,或者更改字段的顺序和排列,甚至添加新的功能按钮。"FormPers_ML_RUP4.doc"可能就是一份关于Form Pers在Release Update Pack 4中的详细指南,包含了如何...

    oracle基本命令整理

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的命令和功能来管理和操作数据库。以下是一些基本的Oracle命令,这些命令涵盖了从创建用户、表空间到查看数据库信息、管理权限以及数据操作等多个方面...

    oracle迁移mysql工具使用方法[整理].pdf

    - **数据类型转换**:Oracle和MySQL的数据类型可能不同,需要确保数据类型的兼容性和正确性。 - **索引和约束**:迁移时需检查和调整索引和约束,以适应MySQL的规则。 - **性能优化**:根据MySQL的最佳实践优化表...

    oracle数据库学习总结(一)整理.pdf

    - 添加字段:`ALTER TABLE student ADD (classid NUMBER(2));` - 修改字段长度:`ALTER TABLE student MODIFY (xm VARCHAR2(12));` - 修改字段类型(无记录时):`ALTER TABLE student MODIFY (xh VARCHAR2(5));` - ...

    Oracle知识整理.doc

    Oracle数据库系统是企业级数据管理的重要工具,涵盖了多种对象类型和功能。以下是对这些知识点的详细解释: 1. **表**:表是Oracle数据库的基本构建块,由行和列组成,用于存储数据。创建表使用`CREATE TABLE`语句...

Global site tag (gtag.js) - Google Analytics