暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle中ALTER TABLE的五种用法

SQL数据库运维 2022-07-10
6782

点击蓝色字关注“SQL数据库运维”

日常工作中,很多情况下都会遇到对原数据表的修改,特别是修改数据字段的长度,会经常的遇到,那么要修改现有表的结构或者新增字段或修改字段长度,就可以使用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(200NOT 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数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料。


                                    动动小手点击加关注呦☟☟☟

                                    文章转载自SQL数据库运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                    评论