首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料類型大全:分類詳解、儲存特性與選型指南

     編輯:關於SqlServer

體系概覽

SQL Server 將系統資料類型分為七大類:整數、浮點數、二進制、邏輯、字元、文字/圖形、日期時間。每個欄位、變數、參數、運算式皆有確定類型。


一、整數資料類型 (精確數值)

類型範圍儲存位元組適用場景
BIGINT-2^63 ~ 2^63-18極大範圍 ID、科學計算、高併發序列
INT-2^31 ~ 2^31-14通用主鍵、計數器、外鍵 (預設首選)
SMALLINT-32,768 ~ 32,7672狀態碼、小範圍枚舉、節省空間
TINYINT0 ~ 2551布林替代、極小範圍計數、性別/狀態

選型原則:滿足業務範圍的前提下,選擇儲存空間最小的類型,可顯著降低 I/O、記憶體、索引體積。


二、浮點數與定點數 (近似/精確數值)

類型精度/範圍位元組備註
REAL7 位有效數字, ±3.40E±384單精度浮點,近似值
FLOAT[(n)]n=1~7 相當 REAL (4B); n=8~15 雙精度 (8B, 15 位)4/8科學計算、物理量,近似值
DECIMAL(p,s)
NUMERIC(p,s)
p=1~38 (總位數), s=0~p (小數位)5~17精確數值,金融、貨幣、計量必選

關鍵差異:FLOAT/REAL 為二進制浮點,無法精確表示 0.1 等十進制小數;DECIMAL/NUMERIC 為十進制定點,**精確無誤差**,財務系統嚴禁使用前者。

精度擴展啟動參數

SQL Server 預設最大精度 28 位,可啟動參數擴展至 38 位:

sqlservr /d "C:\MSSQL\Data\master.mdf" /p38

三、二進制資料類型

類型長度儲存特性
BINARY(n)固定 n (1~8000)n+4 位元組輸入需 0x 前綴,不足右補 0x00,超長截斷
VARBINARY(n)變動 0~n實際長度+4變長、允許 NULL 視為 VARBINARY,處理速度略慢於 BINARY

應用:檔案雜湊、加密金鑰、小型二進制物件。


四、邏輯類型

  • BIT:1 位元組,值 0/1/NULL。非 0 視為 1。**不可直接設為 NOT NULL** (需配合預設值或 CHECK)。

五、字元字串類型

類型編碼最大字元數儲存適用
CHAR(n)非 Unicode8000固定 n 位元組定長代碼 (ISO 國別碼、定長識別碼)
VARCHAR(n)非 Unicode8000實際長度+2通用變長字串 (姓名、地址、描述)
NCHAR(n)Unicode (UTF-16)4000固定 2n 位元組定長多語言 (中日韓固定長代碼)
NVARCHAR(n)Unicode (UTF-16)4000實際 2*長度+2通用多語言、混合語系內容

MAX 指定符:VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX) 支援 2GB 資料,取代舊版 TEXT/NTEXT/IMAGE。


六、大型物件 (LOB) 類型 — 已棄用,僅相容保留

舊類型替代類型最大容量備註
TEXTVARCHAR(MAX)2^31-1 位元組非 Unicode 長文本
NTEXTNVARCHAR(MAX)2^30-1 位元組Unicode 長文本
IMAGEVARBINARY(MAX)2^31-1 位元組二進制大物件 (圖片、文件)

**新開發嚴禁使用 TEXT/NTEXT/IMAGE**,遷移現有欄位至 MAX 類型可獲得更好效能與功能支援。


七、日期時間類型 (SQL Server 2008+ 推薦新類型)

類型範圍精度位元組建議
DATETIME1753-01-01 ~ 9999-12-313.33 ms8舊系統相容
DATETIME2(n)0001-01-01 ~ 9999-12-31100 ns (n=7)6~8首選,範圍更廣、精度更高
DATE0001-01-01 ~ 9999-12-31天3僅需日期
TIME(n)00:00:00 ~ 23:59:59.9999999100 ns3~5僅需時間
DATETIMEOFFSET(n)含時區偏移100 ns8~10跨時區應用
SMALLDATETIME1900-01-01 ~ 2079-06-061 分鐘4極少用

選型決策樹 (快速參考)

  1. 整數?→ TINYINT/SMALLINT/INT/BIGINT (由小到大試)
  2. 金額/精確小數?→ DECIMAL(p,s)
  3. 科學近似值?→ FLOAT/REAL
  4. 多語言文字?→ NVARCHAR (定長用 NCHAR)
  5. 純 ASCII 文字?→ VARCHAR (定長用 CHAR)
  6. 二進制?→ VARBINARY (定長用 BINARY)
  7. 日期時間?→ DATETIME2 / DATE / TIME / DATETIMEOFFSET
  8. 超大物件?→ VARCHAR(MAX) / NVARCHAR(MAX) / VARBINARY(MAX)

總結

精準選型 = 空間節省 + 效能提升 + 資料正確性。金融必用 DECIMAL,多語言必用 NVARCHAR,新專案棄用 TEXT/NTEXT/IMAGE,日期時間首選 DATETIME2 系列。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved