Oracle  增加和删除字段
在创建表之后,可能会需要根据应用需求的变化向表中增加或删除列。
使用ALTER TABLE … ADD语句能够向表中添加新的字段。例如,利用下面的语句在EMPLOYEES表中增加一个名为AGE的新字段:
SQL> alter table employees add(age number(2));
表已更改。
SQL> desc employees
名称                            是否为空?    类型
-----------------------------------------      -------------    ----------------
EMPNO                          NOT NULL  NUMBER(10)
ENAME                                      VARCHAR2(20)
SEX                                          CHAR(2)
SALARY                                      NUMBER(8,2)
HIREDATE                                    DATE
JOB                                          VARCHAR2(10)
EMAIL                                      VARCHAR2(50)
DEPTNO                        NOT NULL  NUMBER(3)
AGE                                          NUMBER(2)
与此相反,使用ALTER TABLE … DROP语句可以删除表中不再需要使用的字段。但是不能删除表中所有的字段,也不能删除SYS模式中任何表中的字段。如果仅需要删除一个字段,则必须在字段名前指定COLUMN关键字。例如,下面的语句将删除EMPLOYEES表中的AG
E字段:
SQL> alter table employees drop column age;
表已更改。
SQL> desc employees
名称                        是否为空?      类型
-----------------------------------    -------------      ------------------
EMPNO                    NOT NULL    NUMBER(10)
ENAME                                  VARCHAR2(20)
SEX                                      CHAR(2)
SALARY                                  NUMBER(8,2)
HIREDATE                                DATE
JOB                                      VARCHAR2(10)
EMAIL                                    VARCHAR2(50)
DEPTNO                    NOT NULL    NUMBER(3)truncatedelete和drop的区别
如果要在一条语句中删除多个列,则需要将删除的字段名放在括号中,各字段之间用逗号隔开,并且不能使用关键字COLUMN。例如,下面的语句将删除EMPLOYEES表的SEX和EMAIL列:
SQL> alter table employees
  2  drop (sex,email);
表已更改。
SQL> desc employees
名称                          是否为空?    类型
----------------------------------------  --------------    -----------------
EMPNO                      NOT NULL    NUMBER(10)
ENAME                                    VARCHAR2(20)
SALARY                                    NUMBER(8,2)
HIREDATE                                  DATE
JOB                                        VARCHAR2(10)
DEPTNO                      NOT NULL    NUMBER(3)
如果在上述语句使用了关键字COLUMN,将会产生如下所示的错误:
SQL> alter table employees drop column (hiredate,job);
alter table employees drop column (hiredate,job)
                                  *
第 1 行出现错误:
ORA-00904: : 标识符无效
 
在删除字段的定义时,系统将删除表中每条记录的相应字段值,同时释放所占用的存储空间,并且不会影响到表中其他列的数据。如果要删除一个大型表中的字段,由于需要对每个记录进行处理,因此删除操作可能会执行很长的时间。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。