首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 內置數據類型完全圖鑑:數值、字串、圖形、二進制、時序與 DATALINK 詳解

     編輯:DB2 教學

前言:掌握類型系統是高效建模的前提

DB2 提供豐富且強類型的內置數據類型體系,合理選型直接影響存儲效率、索引性能、應用邏輯簡潔度。本文按語義分類,詳細列舉每類型的存儲格式、取值範圍、精度規則、長度上限及典型適用場景,供建模與開發參考。

一、數值類型 — 精度與範圍的權衡

類型別名存儲精度/範圍適用場景
SMALLINTINT22 字節-32,768 ~ 32,767 (5 位)狀態碼、小範圍枚舉、標誌位
INTEGER / INTINT44 字節-2,147,483,648 ~ 2,147,483,647 (10 位)主鍵 ID、計數器、通用整數
BIGINTINT88 字節-9.22E18 ~ 9.22E18 (19 位)海量主鍵、時間戳毫秒數、大數計算
DECIMAL(p,s) / NUMERIC(p,s)DEC / NUM壓縮 BCD
(~p/2 字節)
p ≤ 31, s ≤ p
範圍 ±(10^31-1)
金額、匯率、精確科學計算
REALFLOAT(24)4 字節±1.175E-37 ~ ±3.402E+38
7 位有效數字
單精度科學計算、圖形坐標
DOUBLE / DOUBLE PRECISION / FLOATFLOAT(53)8 字節±2.225E-308 ~ ±1.797E+308
15-16 位有效數字
雙精度科學計算、機器學習特徵

提示:所有數值類型均帶符號;DECIMAL 存儲為壓縮十進制 (BCD 變體),避免二進制浮點誤差,金融業務強制使用。

二、字符串類型 — 單字節字符集 (SBCS/MBCS)

類型長度範圍存儲特徵典型用途
CHAR(n) / CHARACTER(n)1 ~ 254 字節
(默認 1)
定長,空白填充固定長度代碼 (ISO 國別碼、貨幣代碼)
VARCHAR(n) / CHAR VARYING(n)1 ~ 32,672 字節變長,2 字節長度前綴通用變長文本 (姓名、地址、描述)
LONG VARCHAR1 ~ 32,700 字節變長,兼容舊版遷移兼容,新建議用 VARCHAR/CLOB
CLOB(n[K|M|G])最大 2,147,483,647 字節
(2GB-1)
大對象,獨立 LOB 空間
支持 INLINE LENGTH
長文檔、日誌、JSON/XML 文檔

CLOB 長度單位:n (字節)、nK (n×1024)、nM (n×1,048,576)、nG (n×1,073,741,824)。

三、圖形字符串類型 — 雙字節字符集 (DBCS)

專為日文、中文、韓文等雙字節字符設計,長度單位為「雙字節字符」。

類型長度範圍對應單字節類型
GRAPHIC(n)1 ~ 127 雙字節CHAR(n)
VARGRAPHIC(n)1 ~ 16,336 雙字節VARCHAR(n)
LONG VARGRAPHIC1 ~ 16,350 雙字節LONG VARCHAR
DBCLOB(n[K|M|G])最大 1,073,741,823 雙字節CLOB

四、二進制字符串類型 — 非結構化字節流

類型長度範圍典型載荷
BLOB(n[K|M|G])最大 2,147,483,647 字節圖片、音視頻、加密數據、序列化對象、用戶定義結構

BLOB 不進行字符集轉換,按原始字節存取,適合任意二進制負載。

五、日期時間類型 — 語義豐富的時間建模

類型組成範圍/精度存儲長度字符串表示示例
DATE年(0001-9999)、月(1-12)、日(1-n)天級4 字節 (內部) / 10 字節 (外部)'2024-12-31' / '12/31/2024'
TIME時(0-24)、分(0-59)、秒(0-59)秒級3 字節 / 8 字節'23:59:59' / '23.59.59'
TIMESTAMP年、月、日、時、分、秒、微秒(6位)微秒級10 字節 / 26 字節'2024-12-31-23.59.59.123456'

日期時間運算與轉換速查

  • 當前值:CURRENT DATE / CURRENT TIME / CURRENT TIMESTAMP / CURRENT TIMEZONE
  • 提取分量:YEAR() MONTH() DAY() HOUR() MINUTE() SECOND() MICROSECOND()
  • 日期計算:CURRENT DATE + 1 YEAR、CURRENT DATE + 3 YEARS + 2 MONTHS + 15 DAYS
  • 天數差:DAYS(CURRENT DATE) - DAYS('2024-01-01')
  • 字符串轉換:DATE('2024-12-31')、TIMESTAMP('2024-12-31 23:59:59')、VARCHAR_FORMAT(TS, 'YYYY-MM-DD')
  • 時間戳差值:TIMESTAMPDIFF(單位, CHAR(TS1 - TS2)),單位:1=微秒分數、2=秒、4=分、8=時、16=天、32=周、64=月、128=季、256=年。

六、特殊類型:DATALINK

  • 語義:邏輯引用數據庫外部文件 (文件系統/HTTP/FTP/NAS),不存儲文件內容。
  • 特性:支持文件鏈接完整性控制 (RECOVERY YES/NO)、讀權限控制 (READ PERMISSION FS/DB)、寫權限控制 (WRITE PERMISSION FS/BLOCKED/ADMIN)。
  • 場景:海量非結構化文件 (醫療影像、工程圖紸、合同掃描件) 的元數據管理與訪問控制,避免將大文件塞入 LOB 膨脹備份窗口。

建模選型決策樹

  1. 是否需精確小數運算?→ DECIMAL(p,s)
  2. 整數範圍?→ SMALLINT / INT / BIGINT
  3. 科學計算可容忍浮點誤差?→ REAL / DOUBLE
  4. 定長代碼?→ CHAR / GRAPHIC
  5. 通用文本 ≤ 32KB?→ VARCHAR / VARGRAPHIC
  6. 長文本 / 文檔?→ CLOB / DBCLOB (配置 INLINE LENGTH 熱數據內聯)
  7. 二進制媒體?→ BLOB
  8. 時間業務語義?→ DATE / TIME / TIMESTAMP (優先用 TIMESTAMP WITH TIMEZONE 避免時區坑)
  9. 外部文件引用?→ DATALINK

合理的類型選型 = 存儲節省 30%+ + 索引加速 2x+ + 應用代碼簡化。建議在概念模型階段即完成類型映射,避免後期 ALTER TABLE 搬運數據。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved