DB2中修改列(column)的数据类型(Data Type)

来源:互联网 发布:跑男第三季网络直播 编辑:程序博客网 时间:2024/05/29 14:42

无论是开发人员,或者数据库管理员,无论我们如何努力,如何小心,都难免会需要更改表子段的类型。 主要有以下原因:

  •  字段长度不够用
  • 字段类型和本地数据库的其它表相同业务含义的字段没有保持一致
  • 字段类型和外部系统相同业务含义的字段没有保持一致

在DB2中如何修改字段类型:

基本语法: alter table <TABLE_NAME> alter column <COLUMN_NAME> set data type <NEW TYPE>Examples:           alter table HR.EMPLOYEE alter column HOBBY set data type varchar(300);


注意: 修改后的新类型<NEW TYPE>相比修改前的数据类型,必须是castable(可转换,详细信息参考本文后面的官方文档,但是又一个重要的原则就是不能你让数据库为难,比如字段里有20个字节的数据,你非得转成10个字节那就不行,如果CHAR字段里含有‘aa',你非得转变成int,那也不行)的。一般来说,在修改字段类型之后都需要做REORG(数据重组)

           

      reorg table HR.EMPLOYEE with distribution and indexes all

 但是如下的改动不需要做reorg. (我比较懒,除非表特别大,一般做完这种表结构改动后都会做一遍reorg /runstats)

  •    增加VARCHAR, VARGRAPHIC, or VARBINARY的长度
  •    减少VARCHAR, VARGRAPHIC, or VARBINARY的长度,但是不需要删除这些字段最后的空格,并且在此字段上无索引。

在DB2中如何修改字段从空=>非空:


基本语法: alter table <TABLE_NAME> alter column <COLUMN_NAME> set <NOT NULL>Examples:            alter table HR.EMPLOYEE alter column HOBBY set not null;

在DB2中如何修改字段从非空=>空:


基本语法: alter table <TABLE_NAME> alter column <COLUMN_NAME> drop not nullExamples:            alter table HR.EMPLOYEE alter column HOBBY drop not null;


详细ALTER TABLE 语法,请参考IBM DB2的Knowledge Center:

     https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000888.html

详细哪些数据类型到哪些数据类型是Castable的参考:

     https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008478.html

1 0
原创粉丝点击