精华内容
下载资源
问答
  • 对已经有数据的表修改字段类型时,Oracle提示:ORA-01439: 要更改数据类型, 则要修改的列必须为空。 可以创建新表,灌入原表数据后再改名,或者创建临时字段,替换数据后再删除。   测试环境: ...
    对已经有数据的表修改字段类型时,Oracle提示:ORA-01439: 要更改数据类型, 则要修改的列必须为空。
    可以创建新表,灌入原表数据后再改名,或者创建临时字段,替换数据后再删除。
     
    测试环境:
    1. drop table foo;
    2. create table foo (col_name varchar2(5));
    3. insert into foo values('1');
    4. insert into foo values('12');
    5. insert into foo values('33445');
    6. commit;
    7. create index idx1 on foo (col_name);
    8. select * from foo;
    9. desc foo
    解决方法
     
    1. 创建新表
    根据当前表结构创建新表,修改新表字段,将原数据灌进来,删除旧表,将新表rename为旧表名
    1. create table new as select * from foo where 1=2;
    2. alter table new modify (col_name number(5));
    3. insert into new select * from foo;
    4. drop table foo;
    5. rename new to foo;
    如果原表有索引,触发器、外键等需要新建。
     
    2.  使用CTAS来转换
    oracle 的使用查询创建表的功能创建一个新表包含原来的数据,命令如下: 
    1. create table new
    2. as 
    3. select [其他的列], 
    4.  to_number(Char_Col) col_name
    5. from foo;
    然后drop 原表,新表更名为原表: 
    1. drop table foo; 
    2. rename new to foo;
    与方法1一样要注意新建相关对象。
     
    3. 创建临时字段替换《推荐此种方式》
    新建一个临时字段,把要修改的字段的内容备份到临时字段后清空原字段,然后再修改类型,之后再把临时字段的内容复制到修改后的字段,最后删除临时字段 (注意字段间格式的转换 to_number(XX)、TO_CHAR(XX)等等
    1. alter table foo add(col_name2 number(5));
    2. update foo set col_name2= to_number(col_name);
    3. update foo set col_name = null; --此处要小心啊,原数据全没了,一定要保证上一步正确执行

    4. alter table foo modify (col_name number(5));
    5. update foo set col_name = col_name2;
    6. alter table foo drop column col_name2;
    展开全文
  • 批量更改数据库指定字段类型/*********************************************************************************************************Decription:用于修改处理数据表字段类型*1)要求先删除对应字段的默认约束...

    批量更改数据库指定字段类型

    /*******************************************************************************************************

    * * Decription: 用于修改处理数据表字段类型 *    1) 要求先删除对应字段的默认约束 *       2) 修改字段类型,重新添加默认约束 *    3) 修改配置表的信息为 INPUT 类型

    ALTER TABLE PdStandardArtMain DROP CONSTRAINT DF_PdStandardArtMain_Is_TransferAXGOALTER TABLE PdStandardArtMain ALTER COLUMN Is_TransferAX INT GOALTER TABLE PdStandardArtMain ADD CONSTRAINT DF_PdStandardArtMain_Is_TransferAX DEFAULT 0 FOR Is_TransferAX  GO

    ********** 需要处理的数据库 ********** * 请手动更改 USE 下的几个数据库

    ******************************************************************************************************/

    USE DB

    GO

    DECLARE @Table_Name   NVARCHAR(50) = N''DECLARE @Column_Name  NVARCHAR(50) = N'Is_TransferAX'DECLARE @Constraint_Name NVARCHAR(100) = N''DECLARE @SQLCMD    NVARCHAR(2000) = N''DECLARE @strCRLF   NVARCHAR(10)   = NCHAR(13) + NCHAR(10)

    --查找当前数据库下所有表 Is_TransferAX 字段的类型SELECT ST.[name] AS "Table_Name", SC.[name] AS "Column_Name", SD.definition AS "Default_Value", SD.[name] AS "Constraint_Name"  INTO #tmp_ReTypeColumn FROM sys.tables ST INNER JOIN sys.syscolumns SC ON ST.[object_id] = SC.[id]   INNER JOIN sys.default_constraints SD ON ST.[object_id] = SD.[parent_object_id] AND SC.colid = SD.parent_column_id  WHERE SC.NAME = 'Is_TransferAX'   ORDER BY ST.[name], SC.colid

    --用一个本地游标来处理DECLARE cur_ReTypeColumn CURSOR LOCAL FOR SELECT Table_Name, Column_Name, Constraint_Name FROM #tmp_ReTypeColumn

    OPEN cur_ReTypeColumn fetch next from cur_ReTypeColumn INTO @Table_Name, @Column_Name, @Constraint_Namewhile @@fetch_Status=0 begin SET @SQLCMD += N' ALTER TABLE dbo.' + @Table_Name +           N' DROP CONSTRAINT ' + @Constraint_Name +        N' ;' + @strCRLF +       N' ALTER TABLE dbo.' + @Table_Name +        N' ALTER COLUMN ' + @Column_Name + N' INT ' +        N' ;' + @strCRLF +       N' ALTER TABLE dbo.' + @Table_Name +        N' ADD CONSTRAINT DF_' + @Table_Name + @Column_Name + N' DEFAULT 0 FOR ' + @Column_Name + N';' + @strCRLF +       N' ' + @strCRLF    fetch next from cur_ReTypeColumn INTO @Table_Name, @Column_Name, @Constraint_Nameend

    CLOSE cur_ReTypeColumn DEALLOCATE cur_ReTypeColumn

    --开始更新到正式库BEGIN TRANEXEC (@SQLCMD)

    --同步配置表的信息为普通类型,不是CheckBox类型UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnBasalProcess' AND Field_Name = 'Is_TransferAX'UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnProcessList' AND Field_Name = 'Is_TransferAX' UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnBasalComp' AND Field_Name = 'Is_TransferAX'UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnCompList' AND Field_Name = 'Is_TransferAX'

    UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnProductList' AND Field_Name = 'Is_TransferAX'UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnTypeMapping' AND Field_Name = 'Is_TransferAX' UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnContentList' AND Field_Name = 'Is_TransferAX'UPDATE systemdb..pbTableFieldList SET Type='INPUT' WHERE Table_Name='pbYarnCountList' AND Field_Name = 'Is_TransferAX'

    IF @@ERROR<>0 BEGIN   ROLLBACK   PRINT N'更新过程中出现错误,请检查....'  + @strCRLF   PRINT @strCRLF + @SQLCMD + @strCRLF   ENDELSEBEGIN  COMMIT PRINT @strCRLF + N'处理完成....'END

    DROP TABLE #tmp_ReTypeColumn

    RETURN

    ©著作权归作者所有:来自51CTO博客作者kinwar的原创作品,如需转载,请注明出处,否则将追究法律责任

    kinwar

    85篇文章,15W+人气,0粉丝

    展开全文
  • 当然,这些Sql语法在各数据库中基本通用。下面列出:1.增加一个字段alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空alter table user add COLUMN new2 VARCHAR(20) NOT NULL;...

    先来看看常用的方法

    MySql的简单语法,常用,却不容易记住。当然,这些Sql语法在各数据库中基本通用。下面列出:

    1.增加一个字段

    alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空

    alter table user add COLUMN new2 VARCHAR(20) NOT NULL;    //增加一个字段,默认不能为空

    2.删除一个字段

    alter table user DROP COLUMN new2;                //删除一个字段

    3.修改一个字段

    alter table user MODIFY new1 VARCHAR(10);            //修改一个字段的类型

    alter table user CHANGE new1 new4 int;              //修改一个字段的名称,此时一定要重新

    //主键

    alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);

    //增加一个新列

    alter table t2 add d timestamp;

    alter table infos add ex tinyint not null default ‘0′;

    //删除列

    alter table t2 drop column c;

    //重命名列

    alter table t1 change a b integer;

    //改变列的类型

    alter table t1 change b b bigint not null;

    alter table infos change list list tinyint not null default ‘0′;

    //重命名表

    alter table t1 rename t2;

    加索引

    mysql> alter table tablename change depno depno int(5) not null;

    mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]);

    mysql> alter table tablename add index emp_name (name);

    加主关键字的索引

    mysql> alter table tablename add primary key(id);

    加唯一限制条件的索引

    mysql> alter table tablename add unique emp_name2(cardnumber);

    删除某个索引

    mysql>alter table tablename drop index emp_name;

    增加字段:

    mysql> ALTER TABLE table_name ADD field_name field_type;

    修改原字段名称及类型:

    mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

    删除字段:

    mysql> ALTER TABLE table_name DROP field_name;

    mysql修改字段长度

    alter table 表名 modify column 字段名 类型;

    例如

    数据库中user表 name字段是varchar(30)

    可以用

    alter table user modify column name varchar(50) ;

    展开全文
  • 类型名(长度) 是很难更新成功的。 如何才能修改成功呢? 1、创建一个相同结构的表,在该表中进行更改改字段的长度。 2、将原表中的数据全部拷贝到新表中,拷贝之后再创建索引。切不可先创建索引再拷贝数据。 3...

    千万级别的表,需要更改表的某个字段的长度,用如下sql

    alter table <表名> alter column <字段名> 类型名(长度)

    是很难更新成功的。

    如何才能修改成功呢?

    1、创建一个相同结构的表,在该表中进行更改改字段的长度。

    2、将原表中的数据全部拷贝到新表中,拷贝之后再创建索引。切不可先创建索引再拷贝数据。

    3、删除原表。

    4、将新表名改为原表名。

     

    展开全文
  • /********************************************************************************************...**Decription:用于修改处理数据表字段类型*1)要求先删除对应字段的默认约束*2)修改字段类型,重新添加默认约束*...
  • 表字段的操作1.语法:alter table表名 执行动作;2.添加字段(add)alter table表名add字段名 数据类型;(尾插)alter table 表名 add 字段名 数据类型first;(头插)alter table 表名 add 字段名 数据类型after字段名;...
  • 1、SQL Server2008修改数据表字段类型保存提示错误; 解决方法: 1、打开SQL Server2008的SQL Server Management Studio; 2、“工具”--“选项”--“Designers”--找到“表设计器和数据库设计器”; 3、去掉...
  • 1.添加字段 alter table [table_name] add [column_name] [column_type] 2.更改字段类型 alter table [table_name] alter ...注意: 更改字段类型是有限制的,如将字段改为比之前类型长度大的可以,如果要改小或者...
  • 对于已经创建好的表,尤其是已经有大量数据的表,如果需要对表做一些结构上的改变...因此,在大多数情况下,表结构的更改一般都使用alter table 语句,以下是一些常用的命令。 (1) 修改表类型,语法如下:  ...
  • 对于已经创建好的表,尤其是已经有大量数据的表,如果需要对表做一些结构上的...因此,在大多数情况下,表结构的更改一般都使用alter table 语句,以下是一些常用的命令。(1) 修改表类型,语法如下:ALTER TABLE t...
  • 在GORM中可以使用AutoMigrate函数来维持你的表结构一直处于最新状态 但此函数只可仅支持创建表、增加表中没有的字段...所以说,在新建表时使用该函数,日常对表字段类型更改时不可用,且日常最好关闭此功能。 ...
  • Linux的数据库阶段

    2019-11-07 11:25:35
    数据库知识 数据库第一天 4 两台服务器4.50与4.51 4 常见软件: 4 Mysql数据类型: 5 Mysql管理环境 7 常用的SQL命令分类 7 ...更改表字段类型 16 更改总表名 17 键值: 17 Primary key 复合主键: 20 删除主键 22 数...
  • 字段名’,’新字段名’,’column’sp_rename更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。语法sp_rename [ @objname = ] ‘object_name’ ,[ @newname = ] ‘new_name’[ , [ @objtype = ] ...
  • sql实现修改表字段

    千次阅读 2019-12-27 08:10:15
    本文转载自:https://www.cnblogs.com/ringnet/archive/2007/04/27/729213.html 作者:ringnet 转载请注明该声明。...sp_rename 更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。 语法 sp_re...
  • sql 表字段编辑

    2010-12-17 09:20:00
    增加字段 alter table docdsp add dspcode char(200) 删除字段 ALTER TABLE table_...data_type 改名 sp_rename 更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的
  • SQL实现修改表字段

    2017-08-03 08:15:23
    sp_rename N'表名.字段名','新字段名','column'Top ... 更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。    语法  sp_rename [ @objname = ] 'object_name' ,  [ @newname =
  • SAP HANA 表管理SAP HANA 数据库浏览器行存储与列存储更改存储类型.创建表手工加载和卸载列存储表1. SAP HANA 数据库浏览器增加数据库增加数据库: 增加数据库在SAP HANA 数据库浏览器-->选择数据库类型-->选择...
  • 目录 MySQL 概述 数据库中的数据类型 MySQL 六大约束 MySQL 中使用的语言 结构化查询语言MySQL ...使用DDL操作数据库 ...查看数据库 ...创建数据库 ...删除数据库 ...使用数据库 ...更改数据表字段类型 更改数据表...
  • SQLite数据库升级

    千次阅读 2017-09-19 16:23:24
    (3) 删除表字段更改一个已经存在字段的名称、数据类型等等 按实现方式分类 1、删除一个已经存在的字段,或者更改一个已经存在字段的名称、数据类型等等 2、增加表、删除表、增加表字段、修改表名字
  •  1、MySQL表操作(创建表,查询表结构,更改表字段等),  2、MySQL的数据类型(CHAR、VARCHAR、BLOB,等),  3、数据库表的查询操作【重要】 一、单表查询  1.1、查询所有字段  1.2、查询指定字段  1.3、查询...
  • @修改数据表的基本操作 修改数据表操作 修改数据表 -修改表名 -修改字段名 -修改字段的数据类型 ...-更改表的存储引擎 ...3.修改数据表字段的数据类型 4.修改字段的排列位置 5.更改引擎 --修改表名 语...
  • 默认情况下,SQL Server 将存放路径设置为其安装目录下的data子目录,单击该列中的按钮可以在打开的“定位文件夹”对话框中更改数据库的存储路径。 完成上述操作后,单击“确定”按钮关闭“新建数据库”窗口,即完成...
  • 二、SQL基础-表的修改 1.更改表名 ALTER TABLE [RENAME [TO] ]; #例如:将deptname表的表名改为dept ...3.增加表字段 ALTER TABLE [ADD []]; #例如:在 salgrade 表中新增加字段 losal,类型为 int(10) AL
  • 变更表字段的名称、长度、类型、注释 -- 更改字段属性(类型、长度、是否为null、注释) ALTER TABLE tName MODIFY COLUMN column VARCHAR(32) NOT NULL COMMENT '捷控调度账号' eg: ALTER TABLE MEMBER_INFO MODIFY...
  •  1、MySQL表操作(创建表,查询表结构,更改表字段等),  2、MySQL的数据类型(CHAR、VARCHAR、BLOB,等),  本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JO...
  • Microsoft SQL Server数据库建模工具

    热门讨论 2008-10-30 14:36:44
    当您更改某个受关系影响的列的数据类型、长度、精度、小数位数等信息时,关系中的其他字段将随之更改,这个过程是递归的,所有与该字段有直接或间接关系引用的字段都将受到更改。 8、为更改生成SQL脚本。 使用...

空空如也

空空如也

1 2 3
收藏数 60
精华内容 24
关键字:

更改数据库表字段类型