DB2與mysql的具體區別


MySQL、PostgreSQL和DB2之間的數據類型對比

SQL ANSI標准規定了關系數據庫系統中使用的數據類型的規則。但是,並非每種數據庫平台都支持標准委員會定義的每個數據類型。而且,特定數據類型的廠商實現可能與標准的規定不同,甚至在所有數據庫廠商之間互不相同。因此,盡管許多MySQL、PostgreSQL和DB2數據類型在名稱和/或含義方面是相似的,但是也有許多需要注意的差異。

表2列出最常用的DB2數據類型。我們在后面的小節中提供MySQL和PostgreSQL數據類型與DB2最接近的匹配。

盡管DB2對SQL有一些限制(比如對約束名的長度限制、數據類型限制等等),但是各個新版本正在系統化地消除這些限制。


2. DB2數據類型

數據類型

說明

BIGINT

存儲有符號或無符號整數,使用8字節的存儲空間。

BLOB
BLOB(n)

存儲長度可變的二進制數據,長度最大為2 GB。超過1 GB的長度不進行日志記錄。

CHAR(n)
CHARACTER(n)

存儲固定長度的字符數據,長度最大為254字節。使用 ‘n’字節的存儲空間。

CHAR(n) FOR BIT DATA

存儲固定長度的二進制值。

CLOB
CLOB(n)

存儲長度可變的字符數據,長度最大為2 GB。超過1 GB的長度不進行日志記錄。

DATE

存儲日歷日期,不包含天內的時間。使用4字節的存儲空間。

DEC(p,s)
DECIMAL(p,s)
NUM(p,s)
NUMERIC(p,s)

采用精度(p)1到31和刻度(s)0到31來存儲數值。使用(p/2) +1字節的存儲空間。

DOUBLE
DOUBLE PRECISION
FLOAT

存儲浮點數,使用8字節的存儲空間。

FLOAT(p)

采用精度(p)1到53來存儲數值。如果p <= 24,那么相當於REAL。如果p >= 25,那么相當於DOUBLE PRECISION。

GRAPHIC(n)

用於National Language Support(NLS)和長度固定的字符串(常常是DBCS),長度最大為127字節。對於雙字節字符集,使用n*2字節的存儲空間;對於單字節字符集,使用n字節的存儲空間。

INT
INTEGER

存儲有符號或無符號整數,使用4字節的存儲空間。

REAL

存儲浮點數,使用4字節的存儲空間。

SMALLINT

存儲有符號和無符號整數,使用2字節的存儲空間。

TIME

存儲天內的時間,使用3字節的存儲空間。

TIMESTAMP

存儲日期(年、月、日)和時間(小時、分鍾、秒),最大精度6毫秒。使用10字節的存儲空間。

VARCHAR(n)
CHAR VARYING(n)
CHARACTER VARYING(n)

存儲長度可變的字符數據,長度最大為32,672字節。使用n+2字節的存儲空間。

VARCHAR(n) FOR BIT DATA

存儲長度可變的二進制數據。使用n字節的存儲空間。

VARGRAPHIC(n)

存儲長度可變的雙字節字符數據,長度最大為16,336字符。使用(n*2)+2字節的存儲空間。



MySQL和DB2

 

MySQL <wbr>和 <wbr>DB2 <wbr>數據類型的定義和差異

理解MySQLDB2之間的數據類型問題

  • 從性能方面考慮,將少於32K的BLOB和CLOB遷移為VARCHAR(n) WITH BIT DATA或VARCHAR(n)。遷移工具通過研究表中的實際數據處理這一轉換。

  • 遷移工具處理UNSIGNED數據類型。

  • 將Boolean數據類型遷移到SMALLINT或CHAR(1)。

  • 如果小數精度大於31,那么遷移工具將列轉換為雙精度數據類型。

  • 自動遞增的列遷移為數值數據類型並使用IDENTITY子句。

 
下面的表中描述 MySQL 和 DB2 數據類型的定義和差異。表 3 描述最常用的 MySQL 數據類型。表 4 將 MySQL 數據類型映射到最接近的 DB2 數據類型。

 

MySQL可以使用SERIAL別名作為數據類型,這相當於BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE

BOOL或BOOLEAN是TINYINT(1)的同義詞。在MySQL中,DECIMAL的最大位數是65,支持的最大小數位是30。如果為DECIMAL指定UNSIGNED,那么不允許負數。

時間戳列不支持毫秒。


3. MySQL數據類型

數據類型

說明

BIT

固定長度的位串。

BOOLEAN

存儲邏輯布爾值(true/false/unknown),可以是TRUE、true和1;FALSE、false和0。

TINYBLOB

用於存儲二進制對象(比如圖形)的原始二進制數據,最大255字節。

BLOB

用於存儲二進制對象(比如圖形)的原始二進制數據,最大65,535字節。

MEDIUMBLOB

用於存儲二進制對象(比如圖形)的原始二進制數據,最大16,777,215字節。

LONGBLOB

用於存儲二進制對象(比如圖形)的原始二進制數據,最大4GB。

CHAR(n)
CHARACTER(n)

包含固定長度的字符串,用空格填充到長度n。

DATE

用3字節的存儲空間存儲日歷日期(年、月、日)。

DATETIME

用8字節的存儲空間存儲日歷日期和天內的時間。

YEAR

用1字節的存儲空間存儲兩位或四位格式的年份。

DECIMAL(p,s)
NUMERIC(p,s)

存儲精確的數值,精度(p)最高為65,刻度(s)為30或更高。

FLOAT

存儲浮點數,限制由硬件決定。單精度浮點數精確到大約7位小數。UNSIGNED屬性不允許負數。

DOUBLE
REAL

存儲雙精度浮點數,限制由硬件決定。雙精度浮點數精確到大約15位小數。UNSIGNED屬性不允許負數。

TINYINT

存儲有符號或無符號1字節整數。

SMALLINT

存儲有符號或無符號2字節整數。

MEDIUMINT

存儲有符號或無符號3字節整數。

INTEGER

存儲有符號或無符號4字節整數。

BIGINT

存儲有符號或無符號8字節整數。

TINYTEXT

用於存儲最多255字節的字符串數據。

TEXT

用於存儲最多65,535字節的字符串數據。

MEDIUMTEXT

用於存儲最多16,777,215字節的字符串數據。

LONGTEXT

用於存儲最多4GB的字符串數據。

TIME

用3字節的存儲空間存儲天內的時間。

TIMESTAMP

用4字節的存儲空間存儲日期和時間。如果沒有提供有效值的話,TIMESTAMP列會自動設置為最近操作的日期和時間。

VARCHAR(n)
CHARACTER VARYING(n)
CHARACTER VARYING

存儲長度可變的字符串,最大長度由n指定。末尾的空格不存儲。

ENUM

一種串對象,它的值只能是從值列表 ‘value1’, ‘value2’, ..., NULL中選擇的一個值。

SET

一種串對象,它可以具有零個或更多的值,這些值必須從值列表 ‘value1’, ‘value2’, ...中選擇。

BINARY

與CHAR類型相似,但是存儲二進制字節串而不是字符串。

VARBINARY

與VARCHAR類型相似,但是存儲二進制字節串而不是字符串。



4. MySQL數據類型到DB2的映射

MYSQL

DB2

說明

BIT

CHAR(n) FOR BIT DATA

關於用來簡化遷移的UDF的細節,請參閱參考資料

BOOLEAN

SMALLINT或CHAR(1)

使用檢查約束來實施規則。

TINYBLOB

VARCHAR(255) FOR BIT DATA

可以使用BLOB(255)或VARCHAR(255) FOR BIT DATA。在這種情況下,使用VARCHAR效率比較高。

BLOB

BLOB(64K)

如果長度小於32K,那么考慮使用VARCHAR(n) FOR BIT DATA。

MEDIUMBLOB

BLOB(16M)

可以使用NOT LOGGED改進性能。

LONGBLOB

BLOB(2G)

支持的BLOB最大長度是2GB。

CHAR(n)
CHARACTER(n)

CHAR(n)
CHARACTER(n)

在DB2中,‘n’的最大值為254。

DATE

DATE

-

DATETIME

TIMESTAMP

可以使用特殊寄存器CURRENT TIMEZONE對日期進行轉換。

YEAR

SMALLINT

可以使用檢查約束實施YEAR規則。

DECIMAL(p,s)
NUMERIC(p,s)

DECIMAL(p,s)
NUMERIC(p,s)

如果p大於31,那么使用DOUBLE。

FLOAT

REAL

_

DOUBLE
REAL

DOUBLE

_

SMALLINT

SMALLINT

使用檢查約束限制值小於256。

SMALLINT

SMALLINT

_

MEDIUMINT

INTEGER

如果需要,使用檢查約束限制最大長度。

INTEGER

INTEGER
INT

_

BIGINT

BIGINT

_

TINYTEXT

VARCHAR(255)

對於少於32K的數據,使用VARCHAR比較高效。

TEXT

CLOB(64K)

DB2允許為CLOB或BLOB指定長度參數。指定需要的長度,而不要使用TINY、MEDIUM或LONG CLOB。

MEDIUMTEXT

CLOB(16M)

_

LONGTEXT

CLOB(2G)

最大長度是2GB。如果使用LOGGED,那么BLOB或CLOB的最大長度為1GB。使用NOT LOGGED選項可以提高性能。

TIME

TIME

_

TIMESTAMP

TIMESTAMP

_

VARCHAR(n)
CHARACTER VARYING(n)

VARCHAR(n)
CHARACTER VARYING(n)

如果長度小於32K,那么使用VARCHAR。

ENUM

VARCHAR(n)

使用檢查約束來實施規則。

 

原文鏈接:http://blog.csdn.net/zajin/article/details/52209150


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM