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小时内删除。
发表评论