主流資料庫數據類型完整對照表
Microsoft Access、MySQL 和 SQL Server 三大資料庫系統的數據類型定義、儲存範圍與儲存空間需求各有差異。本文整理完整對照表,協助跨平台開發與資料遷移。
Microsoft Access 數據類型
| 數據類型 | 描述 | 儲存空間 |
| Text | 文字或文字數字混合,最多 255 字元 | |
| Memo | 大量文字,最多 65,536 字元。註:無法排序但可搜尋 | |
| Byte | 0 到 255 的整數 | 1 位元組 |
| Integer | -32,768 到 32,767 | 2 位元組 |
| Long | -2,147,483,648 到 2,147,483,647 | 4 位元組 |
| Single | 單精度浮點數 | 4 位元組 |
| Double | 雙精度浮點數 | 8 位元組 |
| Currency | 貨幣型,15 位整數 + 4 位小數。提示:可選擇國家貨幣格式 | 8 位元組 |
| AutoNumber | 自動遞增編號,通常從 1 開始 | 4 位元組 |
| Date/Time | 日期時間 | 8 位元組 |
| Yes/No | 邏輯值 (Yes/No、True/False、On/Off)。註:不允許 NULL | 1 位元 |
| Ole Object | 圖片、音訊、影片或 BLOB | 最多 1GB |
| Hyperlink | 超連結 (含網頁) | |
| Lookup Wizard | 下拉選單選項 | 4 位元組 |
MySQL 數據類型
MySQL 分為 Text、Number、Date/Time 三大類:
文字類型
| 類型 | 描述 |
| CHAR(size) | 固定長度字串,最多 255 字元 |
| VARCHAR(size) | 可變長度字串,最多 255 字元。註:超過 255 自動轉為 TEXT |
| TINYTEXT | 最多 255 字元 |
| TEXT | 最多 65,535 字元 |
| BLOB | 二進位大物件,最多 65,535 位元組 |
| MEDIUMTEXT | 最多 16,777,215 字元 |
| MEDIUMBLOB | 最多 16,777,215 位元組 |
| LONGTEXT | 最多 4,294,967,295 字元 |
| LONGBLOB | 最多 4,294,967,295 位元組 |
| ENUM | 列舉值,最多 65,535 個選項,按輸入順序排序 |
| SET | 集合,最多 64 個選項,可儲存多選值 |
數值類型
| 類型 | 描述 |
| TINYINT(size) | -128~127 (有號) / 0~255 (無號) |
| SMALLINT(size) | -32,768~32,767 / 0~65,535 |
| MEDIUMINT(size) | -8,388,608~8,388,607 / 0~16,777,215 |
| INT(size) | -2,147,483,648~2,147,483,647 / 0~4,294,967,295 |
| BIGINT(size) | -9.22E18~9.22E18 / 0~1.84E19 |
| FLOAT(size,d) | 單精度浮點數 |
| DOUBLE(size,d) | 雙精度浮點數 |
| DECIMAL(size,d) | 定點數,以字串儲存,精確度高 |
* 整數類型可加 UNSIGNED 屬性,範圍從 0 開始
日期時間類型
| 類型 | 描述 |
| DATE | YYYY-MM-DD (1000-01-01 至 9999-12-31) |
| DATETIME | YYYY-MM-DD HH:MM:SS (1000-01-01 至 9999-12-31) |
| TIMESTAMP | Unix 時間戳 (1970-01-01 至 2038-01-19) |
| TIME | HH:MM:SS (-838:59:59 至 838:59:59) |
| YEAR | 2 或 4 位數年份 (1901~2155 或 70~69) |
注意:DATETIME 與 TIMESTAMP 格式相同但運作不同。TIMESTAMP 在 INSERT/UPDATE 時自動設為當前時間。
SQL Server 數據類型
字串類型
| 類型 | 描述 | 儲存 |
| char(n) | 固定長度,最多 8,000 字元 | 定義寬度 |
| varchar(n) | 可變長度,最多 8,000 字元 | 2 bytes + 字元數 |
| varchar(max) | 可變長度,最多 1,073,741,824 字元 | 2 bytes + 字元數 |
| text | 可變長度,最多 2GB | 4 bytes + 字元數 |
| nchar | 固定長度 Unicode,最多 4,000 字元 | 定義寬度 × 2 |
| nvarchar | 可變長度 Unicode,最多 4,000 字元 | |
| nvarchar(max) | 可變長度 Unicode,最多 536,870,912 字元 | |
| ntext | 可變長度 Unicode,最多 2GB | |
| binary/varbinary | 二進位資料,最多 8,000 位元組 | |
| image | 二進位資料,最多 2GB | |
數值類型
| 類型 | 描述 | 儲存 |
| tinyint | 0 到 255 | 1 位元組 |
| smallint | -32,768 到 32,767 | 2 位元組 |
| int | -2,147,483,648 到 2,147,483,647 | 4 位元組 |
| bigint | -9.22E18 到 9.22E18 | 8 位元組 |
| decimal(p,s) | 固定精度,p=1~38(預設18),s=0~p(預設0) | 5-17 位元組 |
| money | 貨幣,-922,337,203,685,477.5808 到 922,337,203,685,477.5807 | 8 位元組 |
| float(n) | 浮點數,n=24(4 bytes) 或 53(8 bytes,預設) | 4 或 8 位元組 |
| real | 浮點數,-3.40E38 到 3.40E38 | 4 位元組 |
日期時間類型
| 類型 | 描述 | 儲存 |
| datetime | 1753-01-01 至 9999-12-31,精度 3.33ms | 8 位元組 |
| datetime2 | 0001-01-01 至 9999-12-31,精度 100ns | 6-8 位元組 |
| smalldatetime | 1900-01-01 至 2079-06-06,精度 1分鐘 | 4 位元組 |
| date | 僅日期,0001-01-01 至 9999-12-31 | 3 位元組 |
| time | 僅時間,精度 100ns | 3-5 位元組 |
| datetimeoffset | datetime2 + 時區偏移 | 8-10 位元組 |
| timestamp | 唯一數字,非真實時間,每表僅一個 | |
其他類型
| 類型 | 描述 |
| sql_variant | 儲存多種類型 (除 text/ntext/timestamp),最多 8,000 位元組 |
| uniqueidentifier | 全域唯一識別碼 (GUID) |
| xml | XML 資料,最多 2GB |
| cursor | 資料庫操作指標參考 |
| table | 暫存結果集 |
重要提醒:不同資料庫同名類型的尺度與細節可能不同,請務必查閱官方文件確認。