Oracle alter 语句用法

  • Post author:
  • Post category:其他


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;



版权声明:本文为weixin_62650141原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。