| 型態 | 位元組 | 有號範圍 | 無號範圍 | 備註 |
|---|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 | BOOL/BOOLEAN 別名 |
| SMALLINT | 2 | -32,768 ~ 32,767 | 0 ~ 65,535 | |
| MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 | |
| INT / INTEGER | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | 最常用 |
| BIGINT | 8 | -9.22e18 ~ 9.22e18 | 0 ~ 1.84e19 | 大數據量主鍵 |
| FLOAT(p) | 4/8 | p≤24 單精度,p>24 雙精度 | 近似值 | |
| FLOAT(M,D) | 4 | 單精度浮點數 | M 總位數,D 小數位 | |
| DOUBLE(M,D) | 8 | 雙精度浮點數 | REAL 別名 | |
| DECIMAL(M,D) | M+1/2 | 精確定點數 | 金額必用,NUMERIC/FIXED 別名 |
| 型態 | 位元組 | 格式 | 範圍 | 備註 |
|---|---|---|---|---|
| DATE | 3 | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | |
| DATETIME | 8 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 無時區轉換 |
| TIMESTAMP | 4 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC | 儲存 UTC,讀取轉會話時區 |
| TIME | 3 | HH:MM:SS | -838:59:59 ~ 838:59:59 | |
| YEAR | 1 | YYYY | 1901 ~ 2155 |
| 型態 | 最大長度 | 特性 |
|---|---|---|
| CHAR(M) | 255 | 定長,右側空格填充 |
| VARCHAR(M) | 65,535 (共享行上限) | 變長,1-2 位元組長度前綴 |
| TINYTEXT | 255 | 不分大小寫 |
| TEXT | 64 KB | 不分大小寫 |
| MEDIUMTEXT | 16 MB | 不分大小寫 |
| LONGTEXT | 4 GB | 不分大小寫 |
| 型態 | 最大長度 | 對應文字型態 |
|---|---|---|
| TINYBLOB | 255 | TINYTEXT |
| BLOB | 64 KB | TEXT |
| MEDIUMBLOB | 16 MB | MEDIUMTEXT |
| LONGBLOB | 4 GB | LONGTEXT |
| 型態 | 儲存大小 | 最大成員數 | 備註 |
|---|---|---|---|
| ENUM('v1','v2',...) | 1-2 位元組 | 65,535 | 單選,內部存數字索引 |
| SET('v1','v2',...) | 1-8 位元組 | 64 | 多選,位元組位運算 |
INT / BIGINT,避免過度設計。TIMESTAMP,否則用 DATETIME。VARCHAR,固定代碼用 CHAR。TEXT/BLOB,注意 max_allowed_packet。ENUM,多標籤用 SET。收藏此表,建表選型不再猶豫。