修改非空表字段类型Oracle

执行以下语句报"要修改数据类型,则要更改的列必须为空"
      alter table 表名 modify (目标字段 varchar2(100));

解决步骤:

第一步,在表中加一个临时字段
      alter table 表名 add 临时字段 目标字段原来的类型;

第二步,将目标字段的值付给临时字段,并将目标字段置空
      update 表名 set 临时字段=目标字段,目标字段=null;

第三步,修改目标类型
      alter table 表名  modify 目标字段 varchar2(100);

第四步,将临时字段的值付给目标字段,并将临时字段置空
      update 表名 set 目标字段=临时字段,临时字段=null;

最后一步,删除临时字段
      alter table 表名 drop column 临时字段;

修改非空表字段类型Oracle,布布扣,bubuko.com

时间: 2024-10-20 07:20:31

修改非空表字段类型Oracle的相关文章

mysql中的alter子句修改表和表字段信息

MySQL中提供了alter子句用于修改表和表字段信息. 修改表信息 使用alter子句修改表信息主要有两个用途. 修改表名 alter table yanggb rename to yanggb1; 修改表注释 alter table yanggb comment 'yanggb is 666'; 修改字段信息 使用alter子句修改表中的字段信息的用途就多了. 修改字段类型和注释 alter table yanggb modify column yanggb1 varchar(200) co

MySQL建表字段类型

1.数据库:在MySQL中,要存储数据,必须从数据库开始,因此首先要创建数据库,但由于学校的MySQL服务器对学生数据帐号有限止,学生不得创建数据库,故每个学生的帐号中已事先由信息中心为大家建立了一个名为帐号名的数据库.但我们必须了解创建数据库的语句为CREATE DATABASE <数据库名>2.数据表:是构成数据库的一个基本单位,在一个数据库中用户可以建立多张数据表.这是我们有权力建立的.3.数据表结构:创建一个数据表的第一步即为创建数据表结构,在数据表结构中的内容包括:有几个字段,每个字

资源表 表字段类型大全

在我们对资源表进行操作也就是,添加表时JEPLUS平台会自动给我们默认的提供了表字段的类型,今天我来详细介绍下表字段类型大全,以及对应数据库到底是什么类型. 一.效果展示 二.准备工作 1.JEPLUS平台5.0.0.2(我是刚升级之后的版本,5.0以上的版本都是可以实现这个功能) 2.数据库MySql 5.7 三.实现步骤 1.数据库建表时的类型对应,我们在平台上创建的表字段选择的类型对应的数据库类型是什么. 我们对应到数据库的真实类型是什么 2.当我们选择的类型为整数时对应的数据库类型 在数

资源表 表字段类型大全—JEPLUS快速开发平台

在我们对资源表进行操作也就是,添加表时JEPLUS平台会自动给我们默认的提供了表字段的类型,今天我来详细介绍下表字段类型大全,以及对应数据库到底是什么类型. 一.效果展示 二.准备工作 1.JEPLUS平台5.0.0.2(我是刚升级之后的版本,5.0以上的版本都是可以实现这个功能) 2.数据库MySql 5.7 三.实现步骤 1.数据库建表时的类型对应,我们在平台上创建的表字段选择的类型对应的数据库类型是什么. 我们对应到数据库的真实类型是什么 2.当我们选择的类型为整数时对应的数据库类型 在数

oracle添加,修改非空约束

NOT NULL约束就是非空约束,经常会在创建表的时候添加非空约束以保证字段必须要输入值 (1)创建表时添加NOT NULL约束 语法: CREATE TABLE 表名( 字段   类型  NOT NULL ........ ); 实例:  CREATE TABLE MANAGERINFO( MANAGERID VARCHAR2(10), LOGINNAME VARCHAR2(10) NOT NULL, PASSWORD VARCHAR2(10) NOT NULL, NAME VARCHAR2(

使用SQL语句查询表及表字段类型说明

今天突然遇到有人要数据库表及表字段说明,数据库表太多又不能一个个表去找,就想想SQL是否能直接查询出来. 经过查询资料,加上一些自己的一些调整写了一个sql语句,在此记录一下,以方便日后查找使用. SELECT ( CASE WHEN a.colorder = 1 THEN d.name ELSE '' END ) N'表名' , ( CASE WHEN a.colorder = 1 THEN ISNULL(( SELECT TOP 1 value FROM sys.extended_prope

Oracle/MySQL/SQL Server修改表字段类型和长度

Oracle ALTER TABLE T_USER MODIFY USERNAME VARCHAR2(18); MySQL ALTER TABLE T_USER CHANGE USERNAME USERNAME VARCHAR(200) NOT NULL COMMENT 'username'; SQL Server ALTER TABLE T_USER ALTER COLUMN USERNAME VARCHAR(200); [注意]SQL Server 字段有约束或者索引,需要按如下方式处理:

解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,mybatis 在执行 sql 时会报错,如果表中有 Blob.Clob 类型在转 json 是也会报错,而且我这里也需要将这几种类型都转为 String 类型到前端. long 类型 sql 报错: Blob/Clob 转 json 报错: 解决方案: 自定义 typeHandle 来统一处理数据库这些特殊的字

oracle 表字段类型,与业务SQL不合理,导致的隐式转换

今天遇到一个生产问题,业务SQL很简单,单表查询,而且表只有三个字段,有个主键ID,而且通过主键ID过滤,业务页面会传一百多个ID过来调用SQL,这个表数据量大小为100多万,但是偏偏这条SQL执行跑了15秒,完全影响业务不能使用. select a,b,c from t where t.id in (1111,222,333,444,555..........) 我一开始并没有去查看表设计,而是直接看了执行计划, 1 alter session set statistics_level=all