(
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 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修改,否则要新建间接字段来转移