`

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 LOB字段处理工具

    Oracle数据库系统中,LOB(Large Object)字段是用来存储大量数据的类型,如图像、音频、视频或大型文本文件。在数据库操作中,LOB字段的处理往往比常规的行数据更为复杂,因为它涉及到大块的数据读取、写入和管理。...

    Oracle数据迁移方法

    - 字段类型转换:SQLServer和Oracle的字段类型有所不同,可能导致转换困难,需要手动调整大量字段类型。 - 表名处理:导出的表名可能被引号包围,并且区分大小写,这在Oracle中可能导致PL/SQL操作的不便。 - 错误...

    关于oracle中clob字段查询慢的问题及解决方法

    最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了。 blob字段直接用 select * from table_name where column like ‘%%'查找的时候是不能实现...

    POWERDESIGNER生成oracle表名带有引号

    在实际应用中, POWERDESIGNER 生成 Oracle 表名带有引号的问题可能会导致其他问题,例如数据移植和数据 integrations 等。因此,解决这种问题非常重要。 POWERDESIGNER 提供了多种解决方法,以满足不同的需求和应用...

    oracle19c升级时区版本 32->42,解决数据泵导数据TSTZ报错

    这种数据类型在处理全球性的事务时尤其有用,因为它不仅记录了时间,还记录了时间所在的时区。 3. **数据泵(Data Pump)**:Oracle Data Pump是Oracle数据库中的一种快速数据传输工具,用于导出(EXPDP)和导入...

    Oracle中的package对象

    这种特性对于处理会话级别的状态或者在多步骤操作中保持中间结果非常有用,尤其是当我们需要实现带参数的视图或其他复杂逻辑时,可以通过全局变量来存储和传递数据,增加程序的可维护性。 为了确保每个会话的全局...

    Oracle项目-数据迁移.ppt

    该工具可以自动识别数据类型、自动创建表结构、自动迁移数据等。这种方案的优点是自动化、快速、可靠,但缺点是需要购买 license。 ODBC 数据源配置 在使用 Oracle 数据迁移工具之前,需要配置 ODBC 数据源。具体...

    表结构和数据

    在这个例子中,"Employees"是表名,"ID"、"Name"、"Department"和"Salary"是列名,INT、VARCHAR2和NUMBER是数据类型,分别对应整数、可变长度的字符串和数值。"ID"列被设为主键,确保每行数据的唯一性。 数据则是...

    oracle使用sql语句增加字段示例(sql删除字段语句)

    在本文中,我们介绍了如何使用 SQL 语句在 Oracle 中增加、修改、删除字段,以及如何重命名表和列、创建带主键的表、删除主键约束和添加主键约束。这些操作都是数据库管理系统中非常重要的一部分,正确地使用它们...

    Oracle数据库日志文件损坏时修复方法的实验研究

    针对每种故障类型,研究了最有效的恢复流程,包括但不限于利用备份文件、归档日志、以及Oracle数据库自带的恢复工具如RMAN(Recovery Manager)。 - **恢复流程的实施**:在具体实施恢复过程中,实验考虑了日志文件...

    学习oracle练习sql脚本.zip

    2. 表的创建与删除(CREATE TABLE 和 DROP TABLE):通过练习创建和删除表,学习如何定义字段、数据类型、主键、外键和其他约束。 3. 插入数据(INSERT INTO):学习如何将数据插入到表中,以及批量插入的技巧。 4...

    Oracle实用教程(第五版)(Oracle11g版)

    设计这些表时,我们需要考虑合适的字段类型(如VARCHAR2、NUMBER)、主键(确保每条记录的唯一性)、外键(关联不同表之间的关系)以及索引(提高查询速度)。例如,学生表可能包含学生ID(主键)、姓名、性别等字段...

    oracle学习视屏

    4. 备份与恢复:学习Oracle的数据保护策略,包括备份类型、备份工具和恢复技术。 5. 性能监控与调优:使用Oracle的性能分析工具(如SQL*Plus、 tkprof 和AWR报告)进行性能监控,并学习如何通过调整SQL语句、索引或...

    Oracle入门学习资料精华

    此外,学习Oracle的数据类型、字段约束(如NOT NULL、UNIQUE、PRIMARY KEY等)以及索引的原理和使用也是基础学习的重要环节。 接下来,SQL(Structured Query Language)是操作Oracle数据库的语言,它分为DML(Data...

    导出数据库(Oracle)表结构为excel(含注释)(源码)

    1. **Oracle数据库表结构**:表结构是指数据库中表的设计,包括字段(列)、数据类型、主键、外键、索引、约束等信息。了解表结构对于数据库设计和维护至关重要。 2. **SQL查询**:导出表结构通常涉及SQL语句,如`...

    oracle与mysql的区别

    Oracle 没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 例如:CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE ...

    oracle习题带答案

    Oracle支持多种数据类型,其中最常见的包括: - `CHAR`:固定长度的字符类型。 - `VARCHAR`/`VARCHAR2`:变长的字符类型。 - `NCHAR`/`NVARCHAR2`:用于存储Unicode字符数据。 - `NUMBER`:用于存储数值。 - `LONG`...

    Oracle课件

    - 数据库概念:Oracle数据库是一个用于存储和管理数据的系统,它支持多种数据类型,如数字、字符串、日期等。 - SQL语言:结构化查询语言是与Oracle交互的主要工具,用于查询、插入、更新和删除数据。 - 数据模型...

Global site tag (gtag.js) - Google Analytics