同義詞。以字串形式儲存,每位(含小數點)佔 1 位元組,空間消耗大。優勢:小數位數固定,運算不失真。適用價格、金額等精度要求高、準確度關鍵欄位。
優勢:極高精度。FLOAT 約 ±1.17E-38,DOUBLE 約 ±2.22E-308。儲存 4/8 位元組。民用數據極少需此精度,筆者從未實用。
| 類型 | 位元組 | 無符號最大值 |
|---|---|---|
| TINYINT | 1 | 255 |
| SMALLINT | 2 | 65,535 |
| MEDIUMINT | 3 | 16,777,215 |
| INT | 4 | 4,294,967,295 |
| BIGINT | 8 | 18,446,744,073,709,551,615 |
原則:選夠用且最小。年齡用 TINYINT;技能值 SMALLINT;AUTO_INCREMENT 主鍵預估 ≤1,600 萬行用 MEDIUMINT(省 1 位元組 × 1,600 萬 ≈ 10MB),勿盲目用 INT。
DATE(僅日期)、TIME(僅時間)、DATETIME(最常用)、TIMESTAMP、YEAR。按需選擇,無技巧可言。
CHAR(n):固定長度,不足補空格,佔 n 位元組。VARCHAR(n):變長,實際長度 +1 位元組(儲存長度資訊)。決策邏輯:
① 絕大多數值達最大長度 → CHAR(VARCHAR 反而多 1 位元組)。
② 長度變化大、多數遠小於上限 → VARCHAR。
CHAR(8)。VARCHAR(6),深市佔 5、滬市佔 7 位元組。滬市股票更多 → CHAR(6) 更划算。| 類型 | 最大長度 | 額外開銷 |
|---|---|---|
| TINYTEXT | 255 | +1 |
| TEXT | 65,535 | +2 |
| MEDIUMTEXT | 16,777,215 | +3 |
| LONGTEXT | 4,294,967,295 | +4 |
論壇、新聞正文按實際大小從小到大選擇。>20 的 CHAR、>100 的 VARCHAR 極少見,超大用 TEXT。
ENUM:最多 65,535 個值,必選且只能選一個。1-2 位元組。例:ENUM('帥哥','美眉') 1 位元組,直讀直寫字串,比 TINYINT 更直觀。SET:最多 64 成員,可選零個到多個。1-8 位元組。理解儲存開銷、精度需求、業務上限,選「夠用最小」類型。篇幅有限,更多實踐靠各位在實戰中磨練。