oracle更改字段,表名和複製一列的數據

create table TestA
(
  NID      NUMBER not null,
  FNAME    VARCHAR2(40),
  PLACE    VARCHAR2(40),
  PRICE    NUMBER,
  a VARCHAR2(10)
)


insert into TestA  values (1,'李達','北京',123,'你好');
insert into TestA  values (2,'浩達','上海',1234,'好');
insert into TestA  values (3,'熊愛華','南京',153,'到好');
insert into TestA  values (4,'離線','吉林',183,'你');
commit;


select * from TestA


增加一列:
alter table TestA add b varchar2(10);
alter table TestA add d varchar2(10);
alter table TestA add e varchar2(10);
刪除一列:
alter   table  TestA drop  column  b;


更改字段名:
1.把TestA 中的列 a 改爲 c
alter table  TestA rename  column  a to c;  


2.把 TestA 表重命名爲 TestB 表
alter table  TestA rename to TestB;


select * from TestB for update


 -------------------將一列的數據更新到另一列,可以用CAST函數進行數據類型轉換


 UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30));


 update TestB set d = cast(price as int);------整數--------

 update TestB set e = price;




-----Oracle修改字段類型和長度語句:
1、假設字段數據爲空時,則不管改爲什麼字段類型,都可以直接執行:
ALTER TABLE tableName modify(columnName 類型);
例如:
alter table TestB modify(f varchar(255));


2、假設字段裏有數據,則改爲nvarchar2(30)可以直接執行:
alter table TestB modify (e nvarchar2(30));


3、假設字段有數據,則改爲varchar2(30)執行時會彈出:"ORA-01439:要更改數據類型,則要修改的列必須爲空",
這時要用上面的方法來解決這個問題:
--------修改原字段名 price 爲 price_tmp
alter table TestB rename column price to price_tmp;


----------增加一個和原字段名同名的字段name
alter table TestB add price varchar2(40);


--------將原字段 price_tmp 數據更新到增加的字段 price
update TestB set price=trim(price_tmp);


---更新完,刪除原字段 price_tmp
alter table TestB drop column price_tmp;


注意:字段沒有數據或修改的新類型和原類型兼容時,可以直接modify修改,否則要新建間接字段來轉移

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章