table_name表名 column_name列名 datatype数据类型
一、添加列
1、添加一个列
alter table
table_name
add
column_name datatype;
eg:
eg:alter table emp add esex varchar2(10);
2、添加多个列
alter table
table_name
add
(column_name1 datatype1,column_name2 datatype2,…);
eg:
alter table emp add(esex varchar2(20),eage number(10));
二、删除列
1、删除一个列
alter table
table_name
drop column
column_name;
eg:
alter table emp drop column esex;
2、删除多个列(注意没有column关键字)
alter table
table_name
drop
(column column_name1,column_name2,…);
eg:
alter table emp drop (esex,eage);
三、修改数据类型(要修改数据类型,要修改的列数据必须为空)
1、修改单列
alter table
table_name
modify
column_name datatype;
eg:
alter table emp modify eage int;
2、修改多列
alter table
table_name
modify
(column_name1 datatype1,column_name2 datatype2,…);
eg:
alter table emp modify (eage number(10),esex number(10));
扩展延伸:在eage有数据的情况下,修改eage数据类型为int,之前的数据仍然要,应该怎么做?(没有非空约束)
create table empe as select * from emp;
update emp set eage= null;
alter table emp modify eage int;
update emp a set a.eage=(select eage from empe b where a.empno=b.empno);
首先将emp表复制,将emp表的eager列清空,然后更改数据类型,最后利用update语句将eage列数据从empe表更新回来。
四、修改表名
alter table
table_name_old
rename to
table_name_new;
eg:
alter table emp rename to empp;
五、修改列名
alter table
table_name
rename column
column_name_old
to
column_name_new;
eg:
alter table emp rename column esex to eesex;
六、标记为不可用列(在物理地址上没有被清除,表中该列不可见。但可以在表中添加列名相同的列)
alter table
table_name
set unused column
column_name;
eg:
alter table emp set unused column eage;
alter table emp add eage int;
alter table
table_name
drop unused columns
;(删除不可用列)
七、将表改为只读或只写状态
1、只读(只读状态下不能对表进行插入和更新,但可以对查询表、修改表名、删除表)
alter table
table_name
read only
;
eg:
alter table emp read only;
2、只写
alter table
table_name
read write
;
eg:
alter table emp read write;