從 TINYINT(1 位元組,無號最大 255)到 BIGINT(8 位元組,無號最大 18446744073709551615),選「夠用且最小」的型別。例如:年齡用 TINYINT、技能值用 SMALLINT、千萬級自增 ID 用 MEDIUMINT(3 位元組)而非 INT,百萬行可省 10MB+ 空間。
FLOAT(4 位元組,單精度)與 DOUBLE(8 位元組,雙精度)適合極小數值科學計算,民用資料鮮少需要此精度,作者至今未用過。
DECIMAL/NUMERIC 以字串形式儲存每位數字(含小數點各佔 1 位元組),空間較大但運算不失真,適合「價格」、「金額」等精度要求高的欄位。
DATE、TIME、DATETIME、TIMESTAMP、YEAR。僅需日期用 DATE,單獨時間用 TIME,最常用 DATETIME。
CHAR 定長,不足補空格;VARCHAR 變長,實際長度+1 位元組存長度。若多數值達最大長度,VARCHAR 反而比 CHAR 多佔 1 位元組。
例:股票名稱固定 4 字(8 位元組)用 CHAR(8);股票代碼上海 6 碼、深圳 4 碼,上海較多時用 CHAR(6) 比 VARCHAR(6) 划算。
CHAR/VARCHAR 最大 255。超過 20 幾乎不用 CHAR,超過 100 改用 TEXT 系列:TINYTEXT(255,+1)、TEXT(65535,+2)、MEDIUMTEXT(16M,+3)、LONGTEXT(4G,+4),依實際需求由小到大選擇。
ENUM 最多 65535 個值,單選必選,1-2 位元組。SET 最多 64 成員,可多選,1-8 位元組。
例:性別用 ENUM('帥哥','美眉') 僅 1 位元組,比 TINYINT 更直觀易用。