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

MySQL 資料類型深度解析與建表選型策略

     編輯:MySQL 資料庫相關知識

一、數值類型三大類

定點數:DECIMAL / NUMERIC

同義詞。以字串形式儲存,每位(含小數點)佔 1 位元組,空間消耗大。優勢:小數位數固定,運算不失真。適用價格、金額等精度要求高、準確度關鍵欄位。

浮點數:FLOAT / DOUBLE

優勢:極高精度。FLOAT 約 ±1.17E-38,DOUBLE 約 ±2.22E-308。儲存 4/8 位元組。民用數據極少需此精度,筆者從未實用。

整數類型:核心選型戰場

類型位元組無符號最大值
TINYINT1255
SMALLINT265,535
MEDIUMINT316,777,215
INT44,294,967,295
BIGINT818,446,744,073,709,551,615

原則:選夠用且最小。年齡用 TINYINT;技能值 SMALLINT;AUTO_INCREMENT 主鍵預估 ≤1,600 萬行用 MEDIUMINT(省 1 位元組 × 1,600 萬 ≈ 10MB),勿盲目用 INT。

二、日期時間類型

DATE(僅日期)、TIME(僅時間)、DATETIME(最常用)、TIMESTAMP、YEAR。按需選擇,無技巧可言。

三、字串類型

CHAR vs VARCHAR

  • CHAR(n):固定長度,不足補空格,佔 n 位元組。
  • VARCHAR(n):變長,實際長度 +1 位元組(儲存長度資訊)。

決策邏輯:
① 絕大多數值達最大長度 → CHAR(VARCHAR 反而多 1 位元組)。
② 長度變化大、多數遠小於上限 → VARCHAR。

實戰案例:股票表

  • 名稱多為 4 字(8 位元組)→ CHAR(8)。
  • 代碼:滬市 6 位、深市 4 位。若用 VARCHAR(6),深市佔 5、滬市佔 7 位元組。滬市股票更多 → CHAR(6) 更划算。

大字串:TEXT 系列

類型最大長度額外開銷
TINYTEXT255+1
TEXT65,535+2
MEDIUMTEXT16,777,215+3
LONGTEXT4,294,967,295+4

論壇、新聞正文按實際大小從小到大選擇。>20 的 CHAR、>100 的 VARCHAR 極少見,超大用 TEXT。

四、枚舉與集合

  • ENUM:最多 65,535 個值,必選且只能選一個。1-2 位元組。例:ENUM('帥哥','美眉') 1 位元組,直讀直寫字串,比 TINYINT 更直觀。
  • SET:最多 64 成員,可選零個到多個。1-8 位元組。

建表策略核心

理解儲存開銷、精度需求、業務上限,選「夠用最小」類型。篇幅有限,更多實踐靠各位在實戰中磨練。

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