首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL數據類型深度指南:字符串/數值/日期時間 存儲特性、字符集選型與性能優化實戰

     編輯:MySQL 資料庫相關知識

字符串類型

類型存儲特性最大長度適用場景性能
CHAR(n)定長,右填充空格255字符固定長度:MD5、UUID、國標代碼查詢快,空間換時間
VARCHAR(n)變長,1-2字節長度前綴65,535字節(共享)不定長:姓名、標題、描述靈活,節省空間
TINYTEXT255字節255極短文本不支持默認值
TEXT64KB65,535文章、日誌離頁存儲
MEDIUMTEXT16MB16,777,215長文檔離頁存儲
LONGTEXT4GB4,294,967,295超大文本離頁存儲

關鍵差異:CHAR/VARCHAR支持DEFAULT、索引全長;TEXT族不支持默認值、索引需指定前綴長度、排序/分組僅用前1024字節。

字符集與校對規則

核心概念

  • 字符集:字符→二進制編碼映射。如utf8mb4(1-4字節/字符,支持Emoji)
  • 校對規則:字符比較/排序規則。如utf8mb4_general_ci(不區分大小寫、速度快)、utf8mb4_unicode_ci(Unicode標準、準確)
  • Maxlen:單字符最大字節數。`SHOW CHARACTER SET`中>1為多字節字符集

選型建議

  • 新項目統一 utf8mb4:完整Unicode支持,避免Emoji截斷
  • 校對規則:一般業務_general_ci,多語言排序敏感用_unicode_ci或_0900_ai_ci(8.0+)
  • 避免混用:庫/表/列/連接字符集不一致導致隱式轉換、索引失效、亂碼

數值類型

類型字節有符號範圍無符號範圍適用場景
TINYINT1-128~1270~255布爾、狀態碼、枚舉
SMALLINT2-32K~32K0~65K小範圍計數
MEDIUMINT3-8M~8M0~16M中等計數
INT4-21E~21E0~42E通用整數、自增ID
BIGINT8-922E~922E0~1844E大數據ID、時間戳毫秒
FLOAT4~7位精度-科學計算、近似值
DOUBLE8~15位精度-高精度近似
DECIMAL(m,n)m/2+2精確小數-金額、價格、比率

鐵律:金額類務必用DECIMAL,禁止FLOAT/DOUBLE(二進制浮點誤差)。UNSIGNED擴大正數範圍,ZEROFILL左填0(展示層用)。

日期時間類型

類型字節範圍精度時區感知適用場景
DATE31000-01-01 ~ 9999-12-31天否生日、入職日期
TIME3-838:59:59 ~ 838:59:59秒否工時、時長
DATETIME81000 ~ 9999秒否業務時間、創建時間
TIMESTAMP41970 ~ 2038秒是日誌、審計、跨時區
YEAR11901 ~ 2155年否年份存儲

選型決策樹:

  1. 需時區自動轉換?→ TIMESTAMP
  2. 需毫秒/微秒?→ DATETIME(6) / TIMESTAMP(6) (5.6.4+)
  3. 範圍超出2038年?→ DATETIME
  4. 僅存日期?→ DATE

數據類型選型是_schema設計的基因編輯,決定存儲成本、查詢性能、數據正確性、擴展邊界。新項目遵循最小足夠原則,嚴禁VARCHAR(255)通吃、BIGINT濫用、FLOAT存金額。

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