資料庫儲存的資料類型與大小各異:有的只儲存數字、有的只儲存文字、有的兩者兼具。許多資料庫支援專用類型:日期時間、二進位字串、布林值。選擇與資料匹配的資料類型是資料庫設計最重要的部分,因這將影響 RDBMS 效能與性能,必須給予足夠重視。
本文列舉 MySQL 支援的大部分重要資料類型(MySQL 為當前最流行免費 RDBMS),並說明何時、如何使用,協助建立合理的資料庫設計。
| 資料類型 | 描述 | 位元組 | 建議使用場景 |
|---|---|---|---|
| SMALLINT | 整數,-32,000 到 +32,000 | 2 | 儲存較小整數,如:年齡、數量 |
| INT | 整數,-20 億到 +20 億 | 4 | 儲存中等整數,如:距離 |
| BIGINT | 超大整數,超出 SMALLINT/INT 範圍 | 8 | 儲存極大整數,如:科學/數學資料 |
| FLOAT | 單精度浮點數 | 4 | 儲存小數資料,如:測量、溫度 |
| DOUBLE | 雙精度浮點數 | 8 | 需雙精度儲存的小數,如:科學資料 |
| DECIMAL | 用戶自定義精度浮點數 | 視精度與長度而定 | 極高精度儲存小數,如:貨幣金額、科學資料 |
| CHAR | 固定長度字串 | 指定長度(最多 255 字元) | 儲存預定義字串,如:固定航線、國家代碼、郵遞區號 |
| VARCHAR | 可變長度字串,有最大限制 | 1 + 實際長度(最多 255 字元) | 儲存不同長度字串,如:姓名、密碼、短標籤 |
| TEXT | 可變長度字串,無最大長度限制 | 2 + 實際長度 | 儲存大型文字資料,如:新聞故事、產品描述 |
| BLOB | 二進位字串 | 2 + 實際長度 | 儲存二進位資料,如:圖片、附件、二進位文件 |
| DATE | 日期,格式 YYYY-MM-DD | 3 | 儲存日期,如:生日、產品到期日 |
| TIME | 時間,格式 HH:MM:SS | 3 | 儲存時間或時間間隔,如:鬧鈴、任務開始/結束時間 |
| DATETIME | 日期時間結合,格式 YYYY-MM-DD HH:MM:SS | 8 | 儲存含日期時間的資料,如:提醒事項、事件 |
| TIMESTAMP | 日期時間結合,格式 YYYY-MM-DD HH:MM:SS | 4 | 記錄即時時間,如:事件提醒、「最後登入」時間戳 |
| YEAR | 年份,格式 YYYY | 1 | 儲存年份,如:畢業年、出生年 |
| ENUM | 一組資料,用戶可選其中一個 | 1 或 2 位元組 | 儲存單選屬性,如:性別(布林選擇) |
| SET | 一組資料,用戶可選 0、1 或多個 | 1 到 8 位元組 | 儲存多選屬性,如:興趣愛好 |
完整列表與詳細描述請參閱 MySQL 手冊,亦可閱讀《Choosing the Right Type for a Column》一文。