千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Oracle增加表字段的几种方法

Oracle增加表字段的几种方法

来源:千锋教育
发布人:xqq
时间: 2023-11-24 19:44:09 1700826249

一、使用ALTER TABLE语句增加表字段

ALTER TABLE语句可以用来修改表结构,包括增加、删除、修改字段以及修改表的约束等。如果要增加一个字段,可以使用下列ALTER TABLE语句:


ALTER TABLE 表名 ADD (字段名 字段类型);
例如:ALTER TABLE emp ADD(emp_age NUMBER(3));

其中,表名为需要增加字段的表名,字段名为需要增加的字段名,字段类型为需要增加的字段类型。可以同时增加多个字段,只需要用逗号隔开即可。

注意:增加字段时,如果表中已经有了相同名字的字段,SQL语句执行会失败。

二、使用CREATE TABLE AS语句增加表字段

CREATE TABLE AS语句可以通过SELECT语句的结果来创建新的表格。可以利用该语句来增加字段,例如:


CREATE TABLE new_emp AS 
  SELECT emp_id,emp_name,emp_salary,emp_age,1 new_field 
  FROM emp;

该语句将根据emp表的结果创建新表new_emp。其中,1代表新加的字段的默认值,可以在语句中修改为需要的值。

三、使用DBMS_REDEFINITION包增加表字段

DBMS_REDEFINITION包提供了一种能够修改字段大小或者增加/删除字段的并行方法,可以执行在线重定义表。其主要步骤为:

1. 使用DBMS_REDEFINITION.START_REDEF_TABLE函数开始重定义表操作。


BEGIN 
  DBMS_REDEFINITION.START_REDEF_TABLE(
    uname => 'SCOTT',
    orig_table => 'EMP',
    int_table => 'EMP_INT',
    col_mapping => '');
END;

2. 使用DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS函数将索引、约束等依赖重定义操作所需的依赖复制到临时表中。


BEGIN 
  DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(
    uname => 'SCOTT',
    orig_table => 'EMP',
    int_table => 'EMP_INT',
    copy_indexes => DBMS_REDEFINITION.CONS_ORIG_PARAMS,
    copy_triggers => TRUE,
    copy_constraints => TRUE,
    copy_privileges => TRUE,
    ignore_errors => FALSE);
END;

3. 使用DBMS_REDEFINITION.FINISH_REDEF_TABLE函数结束重定义表操作,这个函数完成如下操作:重命名原始表,将所有表的依赖性关系转移到重新定义的表中,然后将重新定义的表重命名为原始表的名称。


BEGIN
  DBMS_REDEFINITION.FINISH_REDEF_TABLE(
    uname => 'SCOTT',
    orig_table => 'EMP',
    int_table => 'EMP_INT');
END;

四、使用CREATE AS SELECT语句增加表字段

CREATE AS SELECT语句可以用SELECT语句生成的结果集创建表格。在创建新表时,可以增加新的字段:


CREATE TABLE new_emp2 AS 
  SELECT emp_id,emp_name,emp_salary,emp_age,1 new_field 
  FROM emp;
ALTER TABLE new_emp2 ADD new_field2 varchar2(255);

该代码会先根据emp表的结果创建新表new_emp2,然后利用ALTER TABLE语句增加新字段new_field2。可以在新表前面使用AS关键字,为新表命名。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT