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

MySQL 欄位類型選擇全攻略:數值、日期、字串與儲存細節

     編輯:MySQL 資料庫相關知識

慣例符號

  • M:最大顯示寬度(上限 255)
  • D:小數位數

字串類型儲存開銷

類型儲存需求備註
VARCHAR(M)L+1 bytes(L≤M,M≤65,535)M 過大增加記憶體計算開銷
CHAR(M)M bytes(M≤255)定長,空間換速度
BINARY(M)M bytes二進位定長
VARBINARY(M)L+1 bytes二進位變長
ENUM1-2 bytes值<255 用 1 byte,否則 2 bytes;修改需 DROP+CREATE
SET1-8 bytes成員數 1-8→1B, 9-16→2B, 17-24→3B, 25-32→4B, 33-64→8B

整數類型

類型位元Bytes
TINYINT81
SMALLINT162
MEDIUMINT243
INT324
BIGINT648

浮點與定點數

類型Bytes精度
FLOAT4單精度,約 6 位十進位有效數字
DOUBLE8雙精度,約 13 位
DECIMAL(M,D)M+2字串儲存,精確計算,小數點與符號各佔 1 byte

IEEE 754 浮點數儲存結構(補充)

項目Float (32-bit)Double (64-bit)
符號位 (S)1 bit1 bit
指數位 (E)8 bits11 bits
尾數位 (M)23 bits52 bits
偏移量1271023

範例:123.456 → 二進位科學標記法 → 1.11101101110100101111001 × 2^6 → E=133 (10000101)、M=尾數 23 位。

選型建議

  • 金額、精確計算 → DECIMAL
  • 科學計算、容忍微小誤差 → DOUBLE 優於 FLOAT
  • 定長代碼、MD5 等 → CHAR/BINARY
  • 變長文本、不確定長度 → VARCHAR,M 設實際上限即可
  • 狀態、性別等枚舉值固定 → ENUM(內部當數值處理,速度快)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved