Oracle中ALTER TABLE的五种用法

日常工作中,很多情况下都会遇到对原数据表的修改,特别是修改数据字段的长度,会经常的遇到,那么要修改现有表的结构或者新增字段或修改字段长度,就可以使用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的五种用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值