日常工作中,很多情况下都会遇到对原数据表的修改,特别是修改数据字段的长度,会经常的遇到,那么要修改现有表的结构或者新增字段或修改字段长度,就可以使用ALTER TABLE语句了,基础语法如下:
ALTER TABLE table_name action;
ALTER TABLE语句可用来:
-
添加一个或多个列
-
修改列定义
-
删除一列或多列
-
重命名列名称
-
重命名表名称
在之前我们新建了一个stuinfo的数据表,新建数据表参考链接:Oracle中新建数据表的两种方法(点击文字可跳转),下面将使用这个表进行ALTER TABLE语句应用的相关操作演示。
原表信息如下:
1.Oracle ALTER TABLE ADD列示例
将新列添加到stuinfo表中,可以使用以下语法:
ALTER TABLE table_name
ADD column_name type constraint;
举例,将一个列名为birthdate的新列添加到stuinfo表中:
ALTER TABLE JT_CS.STUINFO
ADD birthdate DATE ;
添加新列后的结果显示:
如果需要同时向stuinfo表中添加多列,可以按如下所示语法将新列置于括号内:
ALTER TABLE table_name
ADD (
column_name type constraint,
column_name type constraint,
...
);
举例,将phone、email两列添加到stuinfo表中:
ALTER TABLE JT_CS.STUINFO
ADD (
phone VARCHAR(20),
email VARCHAR(100)
);
添加新列后的结果显示:
注意:请谨记在添加新列时,如果添加新列时需要使用NOT NULL约束,则需要保证在约束添加前数据表必须为空,不然将无法添加新列(提示如下图);不能添加表中已经存在的列,不然会导致错误。另外,ALTER TABLE ADD列语句在表的末尾添加新列。Oracle没有提供直接的方法来允许您像其他数据库系统(如MySQL)那样指定新列的位置。
由于之前新建的数据表已经插入了数据,为了方便操作,这里我就不添加约束了,如果想要添加,在DATA数据类型后边添加NOT NULL即可。
2. Oracle ALTER TABLE MODIFY列示例
很多情况下,我们都会遇到需要修改列的属性场景,可以使用以下语法:
ALTER TABLE table_name
MODIFY column_name type constraint;
例如,将刚刚在stuinfo添加的字段phone 列更改为一个非空列:
ALTER TABLE STUINFO MODIFY phone DATE NOT NULL;
更改新列属性后结果显示:
如果同时需要修改多个列的属性或修改某个字段的长度,可以使用以下语法:
ALTER TABLE table_name
MODIFY ( column_1 type constraint,
column_1 type constraint,
...);
例如,以下语句将phone 列更改为varchar2(11),并将email列的长度扩展为200个 字符且不允许为空:
ALTER TABLE JT_CS.STUINFO MODIFY(
phone VARCHAR2(11) ,
email VARCHAR2(200) NOT NULL
);
更改新列属性后结果显示:
3. Oracle ALTER TABLE DROP COLUMN示例
存在数据表列的添加,相对应的就有需求从表中删除现有的列,可以使用以下语法:
ALTER TABLE table_name
DROP COLUMN column_name;
该语句从表结构中删除列,并删除存储在该列中的数据。举例,从STUINFO 表中删除我们前边添加的birthdate 日期类型的列:
ALTER TABLE JT_CS.STUINFO
DROP COLUMN birthdate;
删除birthdate 列属性后结果显示已删除:
如果需要同时删除多个列,不同列之间用逗号隔开,可以使用以下语法:
ALTER TABLE table_name
DROP (column_1,column_2,...);
例如,从STUINFO表中删除phone 和email列,可以这样写:
ALTER TABLE JT_CS.STUINFO
DROP( email, phone );
删除phone 和email列属性后结果显示已删除:
4. Oracle ALTER TABLE RENAME列的示例
从Oracle版本9i开始,Oracle添加了一个用于重命名列的子句,语法如下所示:
ALTER TABLE table_name
RENAME COLUMN column_name TO new_name;
例如,以下语句将STUNAME 列重命名为STUNAME_T列:
ALTER TABLE JT_CS.STUINFO
RENAME COLUMN STUNAME TO STUNAME_T;
列重命名后结果显示:
5.Oracle ALTER TABLE RENAME表的示例
要将一个表重命名为一个新的表名,可以使用下面的语法:
ALTER TABLE table_name
RENAME TO new_table_name;
例如,下面的语句将STUINFO表重命名为STUINFO_ST表:
ALTER TABLE JT_CS.STUINFO
RENAME TO STUINFO_ST
数据表重命名后结果显示:
转载自公众号【SQL数据库运维】Oracle中ALTER TABLE的五种用法