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

SQL Server 數據類型完整圖解:精確數值、近似數值、日期時間、字符串、二進制與特殊類型對照表

     編輯:關於SqlServer

數據類型分類總覽

本文彙總 SQL Server 所有內建數據類型,按存儲特性分為 7 大類,附精度、範圍、存儲字節、典型用途對照表。(原文為圖片,此處結構化重構)

1. 精確數值類型

類型範圍存儲精度/小數位典型場景
bit0/1/NULL1 bit (8列=1字節)-布爾標誌
tinyint0~2551 字節-枚舉、狀態碼
smallint-32,768~32,7672 字節-小範圍計數
int-2^31~2^31-14 字節-主鍵、ID、通用整數
bigint-2^63~2^63-18 字節-大量級 ID、時間戳
decimal / numeric-10^38+1 ~ 10^38-15-17 字節p=1-38, s=0-p貨幣、精確計算、比率
smallmoney-214,748.3648~214,748.36474 字節固定 4 位小數小額金額
money-922,337,203,685,477.5808 ~ 922,337,203,685,477.58078 字節固定 4 位小數大額金額

2. 近似數值類型

類型範圍存儲精度場景
float(n)-1.79E+308 ~ 1.79E+3084/8 字節n=1-24→4字節(7位), 25-53→8字節(15位)科學計算、不需精確
real-3.40E+38 ~ 3.40E+384 字節7 位有效數字float(24) 同義

3. 日期時間類型 (2008+ 新類型優先)

類型範圍精度存儲推薦度
date0001-01-01 ~ 9999-12-311 天3 字節✅ 僅需日期
time(n)00:00:00.0000000 ~ 23:59:59.9999999100ns3-5 字節✅ 僅需時間
datetime2(n)0001-01-01 ~ 9999-12-31100ns6-8 字節✅ 新開發首選
datetimeoffset(n)含時區偏移100ns8-10 字節✅ 全球化應用
smalldatetime1900-01-01 ~ 2079-06-061 分鐘4 字節⚠️ 兼容舊系統
datetime1753-01-01 ~ 9999-12-313.33ms8 字節⚠️ 兼容舊系統

4. 字符串類型

類型最大長度存儲編碼場景
char(n)8,000n 字節非 Unicode固定長度代碼
varchar(n)8,000實際長度+2非 Unicode變長 ASCII
varchar(max)2^31-1 (2GB)溢出頁非 Unicode長文本、JSON、日志
nchar(n)4,0002n 字節Unicode (UTF-16)固定長度多語言
nvarchar(n)4,0002×實際長度+2Unicode變長多語言
nvarchar(max)2^30-1 (1GB)溢出頁Unicode長多語言文本
text / ntext / image2GB/1GB/2GBLOB棄用❌ 2005+ 棄用,用 *max

5. 二進制類型

類型最大長度存儲場景
binary(n)8,000n 字節固定長度哈希、加密塊
varbinary(n)8,000實際+2變長二進制
varbinary(max)2GB溢出頁文件流、圖片、文檔
timestamp / rowversion8 字節自動生成樂觀鎖版本號、行變更追蹤

6. 特殊類型

  • uniqueidentifier:16 字節 GUID,NEWID()/NEWSEQUENTIALID(),分佈式主鍵、合併數據。
  • xml:原生 XML 存儲、索引、XQuery/XPath 查詢。
  • sql_variant:存儲除 text/ntext/image/timestamp/sql_variant 外任意類型,極少用。
  • hierarchyid:樹狀結構路徑編碼,支持祖先/後代/層級查詢。
  • geometry / geography:平面/球面空間數據,OGC 標準,空間索引。
  • table:表變量類型,參數傳遞、臨時集合。
  • cursor:游標引用類型,僅用於 OUTPUT 參數。

選型黃金法則

  1. 够用就行:能用 tinyint 別用 int,能用 date 別用 datetime2。
  2. 精確計算用 decimal:貨幣、利率、比例絕不用 float/real/money。
  3. 多語言用 nvarchar:新系統默認 nvarchar,避免編碼亂碼。
  4. 大對象用 *max:varchar(max)、varbinary(max) 替代棄用的 text/image。
  5. 空間業務用 geography/geometry:全球距離用 geography,平面分析用 geometry。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved