萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 欄位類型取值範圍完整速查表:數值、日期時間、字串、二進制、枚舉與集合

整數類型 (精確數值)

類型儲存有號範圍無號範圍 (UNSIGNED)
TINYINT1 byte-128 ~ 1270 ~ 255
SMALLINT2 bytes-32,768 ~ 32,7670 ~ 65,535
MEDIUMINT3 bytes-8,388,608 ~ 8,388,6070 ~ 16,777,215
INT / INTEGER4 bytes-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
BIGINT8 bytes-9.22e18 ~ 9.22e180 ~ 1.84e19

選型原則:夠用就好,節省空間 → 更多行進入記憶體 → 更快查詢。

浮點/定點數值

類型儲存範圍/精度用途
FLOAT4 bytes±3.4e38, ~7 位有效數字科學計算、近似值
DOUBLE / REAL8 bytes±1.7e308, ~15 位有效數字高精度近似值
DECIMAL(M,D) / NUMERIC(M,D)M+2 bytes (約)精確儲存,**金額/財務必用**M=總位數(含小數點), D=小數位, M≤65, D≤30

日期時間類型

類型儲存範圍特性
DATE3 bytes1000-01-01 ~ 9999-12-31純日期
DATETIME8 bytes (5.6.4 前)1000-01-01 00:00:00 ~ 9999-12-31 23:59:59無時區感知
TIMESTAMP4 bytes1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC時區感知,寫入/讀取自動轉換
TIME3 bytes-838:59:59 ~ 838:59:59時間間隔/一天內時間
YEAR[(2|4)]1 byte4 位: 1901~2155, 0000; 2 位: 70~69 (1970~2069)5.6.6 後不建議 2 位

選型建議:DATETIME 存業務時間 (不隨時區變)、TIMESTAMP 存建立/更新時間 (自動 UTC 轉換)、YEAR 存年份。

字串類型

類型最大長度儲存特性適用場景
CHAR(M)255 字元定長,右側空格填充,讀取時去尾部空格固定長度代碼 (ISO 國家碼、MD5 雜湊)
VARCHAR(M)255 (5.0.3 前) / 65,535 字元 (共享 64KB 行上限)變長,1-2 bytes 長度前綴,不填充通用變長字串
TINYTEXT / TINYBLOB255 (2^8-1) 字元/位元組無預設值、不區分大小寫 (TEXT)、二進制 (BLOB)短文本/二進制片段
TEXT / BLOB65,535 (2^16-1)同上文章內容、JSON 文檔
MEDIUMTEXT / MEDIUMBLOB16,777,215 (2^24-1)同上長文本、圖片二進制
LONGTEXT / LONGBLOB4,294,967,295 (2^32-1)同上超大物件 (建議外部存儲 + DB 存路徑)

枚舉與集合

類型成員上限儲存特性
ENUM('v1','v2',...)65,5351-2 bytes (索引值)單選、強制合法值、內部整數比較極快
SET('v1','v2',...)641-8 bytes (位元遮罩)多選、位運算過濾 (FIND_IN_SET)

注意:ENUM/SET 成員修改需 ALTER TABLE 重建表,**慎用於頻繁變更的業務字典**,建議改用關聯表 (字典表 + 外鍵)。

快速選型決策樹

  1. 整數 → 最小滿足範圍的 INT 系 + UNSIGNED
  2. 金額/精確小數 → DECIMAL(10,2) / (19,4)
  3. 日期時間 → DATETIME (業務) / TIMESTAMP (系統自動維護)
  4. 定長代碼 → CHAR(固定長)
  5. 通用字串 → VARCHAR(合理上限)
  6. 大文本/二進制 → TEXT/BLOB (評估外部存儲)
  7. 固定集合單選 → ENUM (少量穩定)
  8. 固定集合多選 → SET (≤64 項)
copyright © 萬盛學電腦網 all rights reserved