資料表設計是資料庫效能與維護性的基石。本文系統整理建表核心原則、各資料類型特性、儲存空間計算與屬性選擇策略,助你建立高效、節省空間的資料結構。
| 類型 | 位元組 | 無符號範圍 | 有符號範圍 |
|---|---|---|---|
| TINYINT | 1 | 0 ~ 255 | -128 ~ 127 |
| SMALLINT | 2 | 0 ~ 65,535 | -32,768 ~ 32,767 |
| MEDIUMINT | 3 | 0 ~ 16,777,215 | -8,388,608 ~ 8,388,607 |
| INT | 4 | 0 ~ 4,294,967,295 | -2,147,483,648 ~ 2,147,483,647 |
| BIGINT | 8 | 0 ~ 2^64-1 | -2^63 ~ 2^63-1 |
1 位元組 = 8 位元。最高位為符號位:0 表正數,1 表負數。
關鍵結論:聲明 ZEROFILL 時一定是無符號;零填充不改變實際數值大小。
| 類型 | 位元組 | 精度 | 適用場景 |
|---|---|---|---|
| FLOAT | 4 | 單精度(約 7 位有效數字) | 科學計算、近似值 |
| DOUBLE | 8 | 雙精度(約 15 位有效數字) | 高精度科學計算 |
| DECIMAL(M,D) | M+2 | 精確定點數 | 金額、財務資料(必選) |
核心差異:FLOAT/DOUBLE 為二進制近似值,DECIMAL 為精確十進制儲存。金額欄位務必使用 DECIMAL。
| 特性 | CHAR(M) | VARCHAR(M) |
|---|---|---|
| 長度 | 固定長度 | 可變長度 |
| 儲存方式 | 不足右側補空格 | 實際長度 + 1~2 位元組長度前綴 |
| 尾部空格 | 查詢時自動移除 | 保留尾部空格 |
| 效能 | 固定長度,查詢快 | 節省空間,但需額外計算長度 |
| 適用場景 | MD5、UUID、固定代碼 | 不定長文字、名稱、描述 |
VARCHAR(N) 的 N 為字元數,非位元組數VARCHAR(N) 可存 N 個字元(中英混排),實際位元組視編碼而定SELECT LENGTH(field) FROM table| 類型 | 格式 | 範圍 | 位元組 | 建議用途 |
|---|---|---|---|---|
| YEAR | YYYY | 1901~2155 | 1 | 僅需年份 |
| TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 | 時間間隔、單日時間 |
| DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | 3 | 純日期(生日、紀念日) |
| DATETIME | YYYY-MM-DD HH:MM:SS | 1000~9999 年 | 8 | 完整時間點,不處理時區 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970~2038 年 | 4 | 自動時區轉換、記錄建立/更新時間 |
良好的表結構設計能顯著降低儲存成本、提升查詢效能、減少未來維護負擔。建立項目初期即制定命名規範與類型選擇標準,事半功倍。