Oracle 修改有值字段属性

前言

1.对于oracle 数据的连接 我们可以选择工具 :
       比如 Navicat ,以及配套的plsql,或者是idea 系列的DataGrip
2.不管使用哪一种工具来连接oracle数据库:
      我们可以用工具提供的直接创建表和字段,我感觉这种方法多适用于自己测试
      加入你做的项目或者产品,还是要用命令,写ddl 语句给到实施人员

如何修改oracle某一列字段的属性

  • 情况1 :
    敏捷开发自我设计表时,创建表结束,突然发现 table 中的字段description varchar2(4000),,可能不够需要改成大字段clob 或者long
    情况2 :
    最开始的需求是这个字段 description 是非必填项,也就是所这个字段没填过为null
    情况3 :
    为了丰富这一模块的功能,形成闭环,对某一字段要进行分类统计分析,列表展示,这个字段在数据库有一部分是有值的

    针对以上情况有两类处理方法
    第一种 : 当要修改字段的类型是统一种类型,是可以直接修改
    比如: 原来字段的属性是TIMESTAMP 改为 DATE
    alter table tb_user_info modify createtime date;
    第二种: 当修改属性字段非统一类型:
    a.当属于第一种或者第二种情况时 以 原来为varchar2 改为long
    alter table tb_user_info modify description long;
    b.当属于第三种情况,就不能直接用这种方法,会报错 ORA-01439:要更改数据类型,则要修改的列必须为空”
    可以进行四步走策略 仍以varchar2 改为long

  • 1.新增加一列字段类型是自己要设置的类型
    alter table tb_user_info add description_new long ;
    comment on column tb_user_info.description_new is ‘新加临时字段’; – 注释(建议建表或者加字段把注释写上,省的后人向你“问好”,尽量少留坑)
    2.把要改列的值赋给新建的列
    update tb_user_info set description_new = description;
    3.执行之前看看新添加的列是否有值,有的话就删除要改的列
    alter table tb_user_info drop column description;
    4.把新建的列字段重命名为原来要改的列
    alter table tb_user_info rename column description_new to description;

    最后提醒一下,赋值这一步也可以用做数据处理,比如老系统的时间格式不一致,可以用函数处理过赋值

猜你喜欢

转载自blog.csdn.net/WindwirdBird/article/details/104937493
今日推荐