MySQL 提供三大類數據類型:文本、數字、日期/時間。正確選型能節省空間、提升性能並保證數據準確性。
| 類型 | 描述 | 最大長度/備註 |
|---|---|---|
| CHAR(n) | 固定長度字符串 | 0-255 字符,不足補空格 |
| VARCHAR(n) | 可變長度字符串 | 0-65,535 字符(行大小限制),超過 255 自動轉 TEXT |
| TINYTEXT | 微文本 | 255 字符 |
| TEXT | 標準文本 | 65,535 字符 |
| MEDIUMTEXT | 中等文本 | 16,777,215 字符 |
| LONGTEXT | 長文本 | 4,294,967,295 字符 |
| BLOB | 二進制大對象 | 65,535 字節 |
| MEDIUMBLOB | 中等二進制 | 16,777,215 字節 |
| LONGBLOB | 長二進制 | 4,294,967,295 字節 |
| ENUM | 枚舉,單選 | 最多 65,535 個值,按輸入順序存儲 |
| SET | 集合,多選 | 最多 64 個成員 |
| 類型 | 範圍 (有符號) | 範圍 (無符號 UNSIGNED) | 字節 |
|---|---|---|---|
| TINYINT | -128 ~ 127 | 0 ~ 255 | 1 |
| SMALLINT | -32,768 ~ 32,767 | 0 ~ 65,535 | 2 |
| MEDIUMINT | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 | 3 |
| INT | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | 4 |
| BIGINT | -9.22E18 ~ 9.22E18 | 0 ~ 1.84E19 | 8 |
| FLOAT(m,d) | 單精度浮點數 | - | 4 |
| DOUBLE(m,d) | 雙精度浮點數 | - | 8 |
| DECIMAL(m,d) | 精確定點數,按字符串存儲 | - | 變長 |
注意: INT(4) 中的數字僅為顯示寬度,不影響存儲範圍。整數類型可加 UNSIGNED(非負)或 ZEROFILL(左補零)。
| 類型 | 格式 | 範圍 | 字節 | 特點 |
|---|---|---|---|---|
| DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | 3 | 僅日期 |
| DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 | 無時區感知 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC | 4 | 自動初始化/更新,時區轉換 |
| TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 | 時間間隔 |
| YEAR | YYYY | 1901 ~ 2155 (4位) | 1 | 年份 |
關鍵差異: TIMESTAMP 僅 4 字節,且會自動轉換時區,適合記錄創建/更新時間;DATETIME 範圍更大,適合業務日期(如生日、預約時間)。