SQL Server 2000 提供豐富的資料類型,正確選擇資料類型對儲存效率、查詢效能與資料完整性至關重要。本文整理核心資料類型分類與適用場景。
| 類型 | 範圍/精度 | 儲存大小 | 適用場景 |
|---|---|---|---|
bit | 0, 1, NULL | 1 位元 (8 欄位共 1 byte) | 布林旗標、是/否欄位 |
tinyint | 0 ~ 255 | 1 byte | 狀態碼、列舉值 |
smallint | -32,768 ~ 32,767 | 2 bytes | 小範圍整數 |
int | -2^31 ~ 2^31-1 | 4 bytes | 通用整數、主鍵 (搭配 IDENTITY) |
bigint | -2^63 ~ 2^63-1 | 8 bytes | 極大整數、高頻主鍵 |
decimal(p,s) / numeric(p,s) | p=1~38, s=0~p | 5~17 bytes | 財務金額、精確計算 (指定精度與小數位) |
money | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 | 8 bytes | 貨幣數值 (固定 4 位小數) |
smallmoney | -214,748.3648 ~ 214,748.3647 | 4 bytes | 小額貨幣 |
| 類型 | 精度 | 儲存大小 | 說明 |
|---|---|---|---|
float(n) | 7 位 (n=1~24) / 15 位 (n=25~53) | 4 / 8 bytes | 科學計算、近似值,避免用於精確比較 |
real | 7 位 | 4 bytes | float(24) 同義字 |
| 類型 | 範圍 | 精度 | 儲存大小 |
|---|---|---|---|
datetime | 1753-01-01 ~ 9999-12-31 | 3.33 毫秒 | 8 bytes |
smalldatetime | 1900-01-01 ~ 2079-06-06 | 1 分鐘 | 4 bytes |
| 類型 | 最大長度 | 儲存特性 | 適用場景 |
|---|---|---|---|
char(n) | 8,000 | 固定長度,不足右補空格 | 固定長度代碼 (如身分證字號) |
varchar(n) | 8,000 | 變動長度,實際長度+2 bytes | 一般文字、可變長度欄位 |
text | 2^31-1 (2 GB) | LOB 儲存,指標存在資料列 | 大型文本 (建議改用 varchar(MAX) 於新版本) |
| 類型 | 最大長度 | 儲存特性 | 適用場景 |
|---|---|---|---|
nchar(n) | 4,000 | 固定長度,雙位元組 | 固定長度多語言代碼 |
nvarchar(n) | 4,000 | 變動長度,雙位元組 | 多語言文字、通用 Unicode 欄位 |
ntext | 2^30-1 (1 GB) | LOB 儲存 | 大型 Unicode 文本 |
| 類型 | 最大長度 | 說明 |
|---|---|---|
binary(n) | 8,000 | 固定長度位元組陣列 |
varbinary(n) | 8,000 | 變動長度位元組陣列 |
image | 2^31-1 (2 GB) | 大型二進位物件 (BLOB) |
timestamp / rowversion:資料庫自動產生的唯一二進位數,用於版本控管/樂觀鎖定,不可手動插入。uniqueidentifier:全域唯一識別碼 (GUID),16 bytes,可用 NEWID() 產生。sql_variant:可儲存除 text/ntext/image/timestamp/sql_variant 外的任何類型,最大 8,000 bytes,索引/條件限制較多。cursor、table:僅供變數/參數使用,不可作為資料表欄位。int + IDENTITY 作為主鍵,效能最佳。decimal(19,4) 或 money,避免浮點誤差。nvarchar,避免編碼轉換問題。varbinary(MAX) / FILESTREAM。char/nchar,可變長度用 varchar/nvarchar。