MySQL 支援大量欄位類型,主要分為三大類:數值類型、日期與時間類型、字串(字元)類型。本節提供各類型的儲存需求、顯示寬度(M)、小數位數(D)等關鍵屬性說明。
| 類型 | 有符號範圍 | 無符號範圍 | 儲存空間 |
|---|---|---|---|
| TINYINT[(M)] | -128 ~ 127 | 0 ~ 255 | 1 Byte |
| SMALLINT[(M)] | -32,768 ~ 32,767 | 0 ~ 65,535 | 2 Bytes |
| MEDIUMINT[(M)] | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 | 3 Bytes |
| INT[(M)] / INTEGER | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | 4 Bytes |
| BIGINT[(M)] | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0 ~ 18,446,744,073,709,551,615 | 8 Bytes |
| FLOAT(precision) | 單精度(≤24)或雙精度(25~53) | - | 4/8 Bytes |
| DOUBLE[(M,D)] | 雙精度浮點數 | - | 8 Bytes |
| DECIMAL[(M,D)] | 精確定點數,以字串儲存 | - | 視 M、D 而定 |
注意:指定 ZEROFILL 會自動附加 UNSIGNED;整數運算若涉及 UNSIGNED,結果亦為無符號。
DATE:'YYYY-MM-DD'(1000-01-01 ~ 9999-12-31)TIME:'HH:MM:SS'(-838:59:59 ~ 838:59:59)DATETIME:'YYYY-MM-DD HH:MM:SS'TIMESTAMP:自動記錄建立/更新時間YEAR:1901 ~ 2155CHAR(M):固定長度,0~255 字元VARCHAR(M):可變長度,0~65,535 位元組TEXT / BLOB:大型文字/二進位資料(TINY/MEDIUM/LONG)ENUM、SET:列舉與集合類型選擇類型原則:「夠用就好」,優先使用較小的類型以節省空間並提升效能。