Oracle 列操作

有一个表名为tb,字段段名为name,数据类型 nchar(20)。

1. 增加列

1.1 直接增加

1
alter table tb add (age nchar(20));

2. 删除列

2.1 删除单列

1
2
3
/*无括号时需要加关键字 column */
alter table tb drop column age;
alter table tb drop (age);

2.2 删除多列

1
alter table tb drop (age,sex...);

3. 修改列数据

3.1. 字段数据为空时,无论改为什么类型,均可直接执行

1
alter table tb modify (name nvarchar2(20));

3.2. 字段有数据,改为原类型兼容时可以直接执

1
alter table tb modify (name nvarchar2(20));

3.3. 字段有数据,且不为兼容类型,则要间接新建字段来转移

1
2
3
4
5
6
7
8
9
10
11
/*修改原字段名name为name_tmp*/
alter table tb rename column name to name_tmp;

/*增加一个和原字段名同名的字段name*/
alter table tb add name varchar2(40);

/*将原字段name_tmp数据更新到增加的字段name*/
update tb set name=trim(name_tmp);

/*更新完,删除原字段name_tmp*/
alter table tb drop column name_tmp;

4. 总结

  1. 添加、修改、删除多列时,用逗号隔开。
  2. 当字段没有数据或要修改的新类型和原类型兼容时,可直接modify修改,否则要间接新建字段来转移。
  3. 删除列时,如果后面列名使用括号包围,则不能使用关键字column,否则必须使用。