DB2 Vs MySQL系列 | MySQL与DB2的数据类型对比

原创 2018年01月02日 00:00:00

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

随着MySQL数据库的应用越来越广泛,DB2MySQL数据库的迁移需求也越来越多。进行数据库之间迁移的时候,首先遇到的并且也是最基本最重要的就是两种数据库数据类型之间的转换。


相关阅读:

从商用到开源:15个维度,全面剖析DB2与MySQL数据库的差异

从商用到开源:DB2迁移至MySQL的最佳实践


下面结合中国证券等级结算深圳分公司开源数据库研究测试项目的DB2数据库向MySQL数据库迁移项目,说明两种数据库数据类型的差异以及迁移过程中的一些注意事项。


无论是DB2数据库,还是MySQL数据库,都要在创建数据库表时为其中的每一列定义一个数据类型,用于限定该列取值范围。DB2数据库支持内置的数据类型(built-in)和用户自定义的数据类型(UDT),但是MySQL数据库只支持内置的数据类型。


下图是MySQL数据库支持的内置数据类型:


640?wx_fmt=png&wxfrom=5&wx_lazy=1

MySQL5.7支持数据类型总览


下图是DB2数据库支持的内置数据类型:


0?wx_fmt=png

DB2 V9/V10支持数据类型总览


DB2数据类型转换为MySQL数据类型,原则上可以分为三大类,在实际转换过程建议遵从以下转换规则进行转换:


数值字段类型(Numeric)


DB2数据库和MySQL数据库的数值类型都可以分为整型数值和浮点型数值。其中在整型数值方面,MySQL数据库的整型类型有有符号(singed)和无符号(unsigned)两种,因此每一类型都可以有两种精度范围的取值;DB2数据库则都是有符号的取值,只存在一种精度范围。下图是两种数据库的整型类型对照表:


0?wx_fmt=png


浮点型数值转换方面,基本上DB2中有的基本数据类型,在MySQL中能找到对应的同名数据类型。


0?wx_fmt=png


实际测试对比发现,DB2的数值类型和MySQL中对应的数值类型基本同名同义,可以很轻松地实现转换。


日期时间字段类型(Date &Time)


MySQL支持的日期时间类型(Datetime/Date/Timestamp/Time/Year)比DB2支持的(Date/Timestamp/Time)更丰富。


两种数据库在日期时间类型上存在如下异同:


Date类型


DB2和MySQL中的Date类型都占四个字节(其中前两个字节为Year,第三个字节为Month,第四个字节为Day);主要差别是DB2数据库中Year的范围是0001~9999,MySQL中Year的范围则为1000~9999。实际运用中可以直接转换。


Timestamp类型


MySQL中的Timestamp是一个Date/time的组合体,取值范围是从1970-01-01 00:00:00到2037年。转换中可以直接从DB2中的Timestamp转换而来。


Time类型


MySQL中Time类型取值范围为从“-838:59:59”to “838:59:59”(HHH:MM:SS),小时部分非常大的原因是MySQL中Time类型不仅可以代表一天中的时间(小于24小时),而且可以代表某个数据库事件消耗的时间或者两个事件之间的时间间隔(可能大于24小时,甚至为负值)。


DB2中该Time类型指一天中的时间,因此取值范围只能是从“00:00:00”到“23:59:59”。


其他


MySQL中除了上述三种日期时间类型外,还有Datetime和Year两种特有的时间类型。Datetime类型也是date和time类型的组合体(YYYY-MM-DDHH:MM:SS),其中Year取值范围从1000到9999。


Year类型取值范围从1901到2155,实际运用中完全可以用SMALLINT或CHAR(4)取代。


字符串字段类型(String)


字符型(CHAR/VARCHAR)类型


无论是DB2还是MySQLCHAR(n)VARCHAR(n)类型分别表示定长和变长字符类型,括号中的n表示定义的能允许最大字符个数;这两种数据类型在DB2MySQL中可以互换。


但是DB2CHAR(n)VARCHARn)的一些特殊用法比如CHAR(n) FOR BIT DATAVARCHAR(n)FOR BIT DATAMySQL中没有得到很好实现,取而代之的是MySQL设计了新的数据类型来实现DB2中的类似功能。MySQL中分别使用BINARY(n)VARBINARY(n)替代CHAR(n)FOR BIT DATA VARCHAR(n) FOR BIT DATA


DB2数据库中使用For Bit Data从句修饰Char(n)Varchar(n)限制指定的字段类型存储二进制数据,一般用于存储音频数据等场合。而在MySQL数据库中则没有对CharVarchar类型做类似扩展,取而代之的是设计了BINARYVARBINARY数据类型专门存储二进制数据。

 

大数据字段(LOB)类型


DB2数据库中VARCHAR类型字段最大能存储的字节数不超过表定义的页大小,比如某个表的页大小(pagesize)为32KB,那么定义的VARCHAR最大有32,672个字节长;如果要存储的字节长超过表的页大小,那么需要为字段定义大数据类型存储数据。


DB2的大数据类型有CLOBBLOB两种,分别存储字符或者二进制数据。而在MySQL中对大数据字段的定义则更加精细,分别为不同长度的大数据字段设计了不同层次的字段类型。


0?wx_fmt=png


如上图所示,DB2CLOB(n)BLOB(n)两种大数据字段类型因其定义的大小不同而分别对应了MySQL数据库中的八种数据类型。


自增字段类型


DB2允许在Create table时能且只能为表中的一个字段指定为Identity自增字段,分别有GeneratedalwaysGenerated bydefault两种形式,表示定义的自增字段不允许人工(应用)干预或者允许人工干预。


MySQL数据库中的自增字段只需要AUTO_INCREMENT修饰即可,而且该字段是人工可干预的。


0?wx_fmt=png


总结


前述主要对比了DB2数据库和MySQL数据库在基本数据类型上的一些差异,对这些差异的掌握了解在做DB2数据库迁移到MySQL数据库工作中必不可少。为了方便比对,将两种数据库的数据类型总结如下图所示:


0?wx_fmt=png


0?wx_fmt=jpeg


推荐阅读:

从商用到开源:DB2迁移至MySQL的最佳实践

15个维度,全面剖析DB2与MySQL数据库的差异

从Oracle到MySQL大家最关注的竟然是...

MySQL vs Postgre SQL的非技术维度的区别

MariaDB助力,MySQL流行度超越Oracle

资源下载

关注公众号:数据和云(OraNews)回复关键字获取

‘2017DTC’,2017DTC大会PPT

‘DBALIFE’,“DBA的一天”海报

‘DBA04’,DBA手记4经典篇章电子书

‘INTERNALS’,Oracle RAC PPT

‘122ARCH’,Oracle 12.2体系结构图

‘2017OOW’,Oracle OpenWorld资料

‘PRELECTION’,大讲堂讲师课程资料

0?wx_fmt=png

MySQL 和 DB2 数据类型的定义和差异

MySQL、PostgreSQL和DB2之间的数据类型对比 SQL ANSI标准规定了关系数据库系统中使用的数据类型的规则。但是,并非每种数据库平台都支持标准委员会定义的每个数据类型。而且,特定...
  • u013063153
  • u013063153
  • 2016年11月16日 11:05
  • 2221

DB2常用数据类型

DB2的常用数据类型包括以下几个: 一.数字型的。 1. SMALLINT          ---短整型,范围为-32768~+32767,一遍用的较少 2. INT/INTEGER    -...
  • DLODJ
  • DLODJ
  • 2011年12月02日 10:11
  • 23003

全面了解DB2数据库中的各数据类型

DB2数据库内置数据类型可以分成数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、二进制字符串型(binary string)或日期...
  • yingfeng612
  • yingfeng612
  • 2015年11月18日 14:48
  • 497

db2数据库入门教程(官方中文版)

  • 2010年10月20日 13:30
  • 4.24MB
  • 下载

db2与oracle、mysql使用区别

1,增加列:相同   alter table test add mail varchar(128); 2,删除列:   oracle 与mysql相同:alter table test dr...
  • xuliuzhu
  • xuliuzhu
  • 2016年05月25日 11:52
  • 2636

DB2、Oracle、mysql和sql server区别

DB2、Oracle、mysql和sql server区别
  • yuxiangaaaaa
  • yuxiangaaaaa
  • 2017年05月11日 17:25
  • 1423

db2数据库的使用总结

db2数据库表的导入和导出,使用数据库管理工具,Aqua Data Studio
  • u014547764
  • u014547764
  • 2016年06月01日 18:07
  • 1420

db2数据库中的数据类型

以前学习的是oracle数据库,最近的项目用的是db2,所以准备学习一下db2的知识, 准备从oracle和db2的不同处开始学习,毕竟相同的地方重复学也没意思,在网上找了一下oracle和db2语法...
  • baidu_33488327
  • baidu_33488327
  • 2016年05月22日 17:59
  • 464

ORACLE、 SQLSERVER、MYSQL与DB2的比较

http://sivyer.iteye.com/blog/768727 http://caryhsu.blogspot.de/2011/06/sql-server-vs-oracle-and-m...
  • Hencoff
  • Hencoff
  • 2012年07月14日 00:14
  • 3350

五大主流数据库比较 (DB2 Oracle MySQL SyBase SQLServer)

一、 开放性  1. SQL Server  只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT se...
  • amork
  • amork
  • 2011年09月28日 15:24
  • 19363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DB2 Vs MySQL系列 | MySQL与DB2的数据类型对比
举报原因:
原因补充:

(最多只允许输入30个字)