如何改oracle字段数据,oracle修改字段數據類型

最近項目中有這樣一個變動,需要修改數據庫中某個字段類型。但是,表中已經存在大量數據了。DML句:"alter table 表名 modify 字段名  新數據類型 " 只對空表起作用,當存在數據時,不允許修改。

下面介紹兩種不刪除數據,更改數據類型的操作方法。

首先,我們先熟悉alter對字段的各種操作,后面會用得到。

對字段操作

操作方法

更新字段名

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);

例如,下面要將fraction的double類型修改為float類型

方法一:

(1) 添加一個新字段 newfield,數據類型設置為新數據類型

(2) 將要修改字段的值復制到剛添加的列中 oldfield—newfield

(3) 刪除原來字段oldfield

(4) 重命名newfield

alter table test add fraction_temp float

update test set fraction_temp =fraction

alter table test drop column fraction

alter table test rename column fraction_temp to fraction

方法二:

(1) 添加一個臨時字段 field_temp,數據類型設置為新數據類型

(2) 將要修改字段的值復制到剛添加的臨時列中 oldfield——field_temp,清空原來字段oldfield值

(3) 修改oldfield的數據類型

(4) 將值從臨時字段中拷貝回來

(5) 清空臨時字段值,刪除臨時字段

alter table test add fraction_temp float

update test set fraction_temp=fraction,fraction=null

alter table test modify fraction float

update test set fraction=fraction_temp,fraction_temp=null

alter table test drop column fraction_temp

第二種方法通過中間字段來操作,雖然步驟多了一步,但是可以避免第一種方法導致的字段位置變動,不過位置變動也沒有什么大的影響吧。

其實,發現還有更簡單的方法,數據庫客戶端支持粘貼復制功能,你可以打開兩個客戶端,保證一個客戶端顯示着表中的所有數據,同時從另一個客戶端中刪除數據,修改數據類型后,再從還保留着數據的客戶端中將數據粘過來。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值