作家
登录

MySQL与DB2的数据类型对比

作者: 来源: 2018-01-03 09:01:18 阅读 我要评论


跟着MySQL数据库的应用越来越广泛,DB2向MySQL数据库的迁徙需求也越来越多。进行数据库之间迁徙的时刻,起首碰到的并且也是最根本最重要的就是两种数据库数据类型之间的转换。

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

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

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

DB2和MySQL系列|MySQL与DB2的数据类型比较

MySQL5.7支撑数据类型总览

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

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

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

DB2和MySQL系列|MySQL与DB2的数据类型比较

数值字段类型(Numeric)

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

DB2和MySQL系列|MySQL与DB2的数据类型比较

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

DB2和MySQL系列|MySQL与DB2的数据类型比较

实际测试比较发明,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)代替。

字符型(CHAR/VARCHAR)类型

无论是DB2照样MySQL,CHAR(n)和VARCHAR(n)类型分别表示定长和变长字符类型,括号中的n表示定义的能许可最大年夜字符个数;这两种数据类型在DB2和MySQL中可以交换。

然则DB2中CHAR(n)和VARCHAR(n)的一些特别用法比如CHAR(n) FOR BIT DATA,VARCHAR(n)FOR BIT DATA在MySQL中没有获得很好实现,取而代之的是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数据库中则没有对Char和Varchar类型做类似扩大,取而代之的是设计了BINARY和VARBINARY数据类型专门存储二进制数据。

大年夜数据字段(LOB)类型

字符串字段类型(String)

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

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


  推荐阅读

  码农和技术大牛的区别就在于是否知道MySQL的这五个私有语句

MySQL是异常风行的关系型数据库,固然拥有的SQL语法大年夜部分是相符ANSI SQL标准的,然则它自身照样携带了很多优良的、私有的语句和指导符,今天我们就来分析一下。EXPLAIN难度指数:★ ★ ☆ ☆ ☆难>>>详细阅读


本文标题:MySQL与DB2的数据类型对比

地址:http://www.17bianji.com/lsqh/40198.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)