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

MySQL 數值與字符串類型完整對照:TINYINT 到 BIGINT、TEXT 到 ENUM/SET 選型指南

     編輯:MySQL 綜合教學

MySQL 數值與字符串類型完整對照:TINYINT 到 BIGINT、TEXT 到 ENUM/SET 選型指南

MySQL 提供豐富的列類型,正確選型直接影響存儲空間、索引性能、查詢效率與業務擴展性。本文系統整理數值類型(整數/浮點/定點)、字符串類型(定長/變長/BLOB/TEXT/枚舉/集合)的存儲特徵、範圍、適用場景與選型原則。

一、整數類型

類型字節有符號範圍無符號範圍默認顯示寬度典型場景
TINYINT1-128 ~ 1270 ~ 2554布爾標誌、狀態碼、極小計數
SMALLINT2-32,768 ~ 32,7670 ~ 65,5356年齡、小範圍排序、中型計數
MEDIUMINT3-8,388,608 ~ 8,388,6070 ~ 16,777,2159中等計數、IP 地址存儲
INT / INTEGER4-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,29511主鍵 ID、用戶 ID、通用計數
BIGINT8-9.22e18 ~ 9.22e180 ~ 1.84e1920大數據主鍵、時間戳毫秒、全局唯一 ID

選型原則:夠用就行,越小越好。非負業務必加 UNSIGNED 獲得雙倍正數空間。主鍵優先 BIGINT UNSIGNED AUTO_INCREMENT。

二、浮點與定點類型

類型字節精度範圍適用場景
FLOAT4~7 位有效數字±3.4e38科學計算、非精確金額
DOUBLE / REAL8~15 位有效數字±1.7e308高精度科學計算
DECIMAL(M,D) / NUMERICM+2 字節精確至 D 位小數取決於 M,D金額、價格、比率、任何不可損失精度的業務

鐵律:涉及金錢、精確計算絕對用 DECIMAL。DECIMAL(10,2) 存 99999999.99,按字符串存儲,計算不丟失精度。

三、日期時間類型

類型字節範圍格式場景
DATE31000-01-01 ~ 9999-12-31YYYY-MM-DD生日、入職日期
DATETIME81000-01-01 00:00:00 ~ 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS訂單創建時間、日志時間
TIMESTAMP41970-01-01 00:00:01 UTC ~ 2038-01-19YYYY-MM-DD HH:MM:SS自動更新時間戳、版本控制
TIME3-838:59:59 ~ 838:59:59HH:MM:SS持續時間、鬧鐘時間
YEAR11901 ~ 2155 (4位)YYYY年份統計

關鍵差異:TIMESTAMP 存儲 UTC、讀取時按會話時區轉換、自動初始化/更新;DATETIME 時區無關、範圍更大、佔用雙倍空間。5.6+ 支持 DATETIME(3) 毫秒精度。

四、字符串類型

類型最大長度存儲開銷特點場景
CHAR(M)255 字符M 字節(定長)右填充空格、讀取去尾空格、索引極快固定長度代碼:MD5、UUID、國家代碼、性別
VARCHAR(M)65,535 字符實際長度 + 1/2 字節變長、不填充、65532 字節行長度限制通用變長文本:名稱、標題、地址、JSON 片段
TINYTEXT255 字符L + 1 字節不支持默認值、不支持索引前綴長度極短文本備選
TEXT65,535 字符L + 2 字節同上文章內容、日志詳情
MEDIUMTEXT16,777,215 字符L + 3 字節同上長文本、HTML 頁面
LONGTEXT4,294,967,295 字符L + 4 字節同上超大文本、文檔存儲

BLOB 系列:TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB 對應 TEXT 系列,二進制存儲、大小寫敏感排序,用於圖片、文件流、加密數據。

五、枚舉與集合類型

類型存儲最大成員數特點場景
ENUM('v1','v2',...)1-2 字節65,535單選、內部存數字索引、按定義順序排序狀態機:pending/paid/shipped/cancelled
SET('v1','v2',...)1-8 字節64多選、位掩碼存儲、FIND_IN_SET 查詢標籤、權限掩碼、多屬性標記

注意:ENUM/SET 修改成員需 ALTER TABLE 重建表,頻繁變動業務建議改用查找表(code 表)+ 外鍵。

六、字符集與校對規則影響

  • utf8mb4:字符 1-4 字節,VARCHAR(65535) 理論上限受行長度 65532 字節限制,實際最大字符數 ≈ 21844。
  • utf8 (utf8mb3):字符 1-3 字節,最大字符數 ≈ 21845。
  • latin1:字符 1 字節,最大字符數 = 65532。

七、選型決策樹

  1. 是否整數?→ 是 → 非負?→ 是 → 範圍 < 256?→ TINYINT UNSIGNED ... 依次向上 → BIGINT UNSIGNED
  2. 是否精確小數?→ 是 → DECIMAL(M,D)
  3. 是否日期時間?→ 需時區自動轉換?→ TIMESTAMP : DATETIME(3)
  4. 是否固定長度代碼?→ CHAR(M)
  5. 是否變長文本 < 64KB?→ VARCHAR(M)
  6. 是否大文本/二進制?→ TEXT/BLOB 系列按長度選
  7. 是否固定集合單選?→ ENUM
  8. 是否固定集合多選?→ SET

八、總結

類型選型核心三原則:精確匹配業務範圍、最小化存儲空間、避免隱式轉換。定期 PROCEDURE ANALYSE() 或 SELECT * FROM table PROCEDURE ANALYSE() 獲取優化建議。遷移類型需評估數據截斷風險、索引重建成本、應用層兼容性,建議低峰期配合 pt-online-schema-change 執行。

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