如何修改oracle数据库中表的结构(字段的长、类型、是否为空)?
如何修改oracle数据库中表的结构(字段的长、类型、是否为空)?
问题点数:50、回复次数:5Top
1 楼genphone_ru(哎,什么都要学,真累)回复于 2002-04-10 14:20:34 得分 3
Alter Table MyTable
Modify ColName VarChar2(20) not nullTop
2 楼arnoldyu(水中之邦)回复于 2002-04-10 14:30:53 得分 0
那如果表里有数据怎么办?还有怎么改字段的名字?Top
3 楼knightc(洋相)回复于 2002-04-10 14:36:30 得分 15
我曾经做过这样的操作:
1,新建一个表B,结构与要修改的表A相同,将A中所有数据导入到B中;
2,删掉A中所有数据,使用ALTER语句修改列属性到满意
3,将数据从B中导回,删除B表
可能有些笨,但好使Top
4 楼countach(Diablo)回复于 2002-04-10 14:38:41 得分 2
字段的名字是改不了的,但你可以先把需要改名的那个字段删掉,然后新增一个字段,如果你需要改名的那个字段有数据的话你也可以先新增一个字段,然后把要改名的字段的数据拷贝到新字段内,最后再删除要改名的字段Top
5 楼countach(Diablo)回复于 2002-04-10 14:49:00 得分 15
如果表里面有数据的话,并且要改字段名字,不防试试以下方法:
在原来的表上新增一个字段COL2(字段名就是你打算修改后的名字),把待修改字段(COL1)的数据放到COL2中,然后再删除COL1;
ALTER TABLE YOURTAB
ADD COL2 VARCHAR2(30);
UPDATE YOURTAB
SET COL2=COL1;
ALTER TABLE YOURTAB
DROP COLUMN COL1;
Top
6 楼tarzan(呔)回复于 2002-04-10 17:02:33 得分 15
假设你的表名为ORI_TABLE,包含3个字段USER_ID ,USER_NAME,USER_PHONE,数据类型分别是CHAR(8),
VARCHAR2(30),VARCHAR2(20)。PK为USER_ID.表中已经有数据。
1.如果要增加某列的大小:
ALTER TABLE ORI_TABLE modify USER_ID CHAR(16)
2.如果要让某列的值不为空:
alter table ORI_TABLE
modify (USER_ID CHAR(8) NOT NULL)
3.如果要让某列可以为空:
alter table ORI_TABLE
modify (USER_ID CHAR(8) NULL)
4.如果要改变数据类型或是列名,必须新建表:
create table NEW_TABLE
(USER_ID VARCHAR2(16),
USER_NAME VARCHAR2(30),
USER_PHONE VARCHAR2(30)
)
然后从ORI_TABLE中导出数据:
insert into NEW_TABLE
select * from ORI_TABLE
最后把ORI_TABLE 删除:
drop table ORI_TABLE
Top




