SQL SERVER字段类型详解,网友推荐必读的数据库设计指南

文章导读
SQL Server 字段类型选择是数据库设计的核心,选错了类型会导致性能问题、存储浪费或数据不准确。推荐优先用 int 而非 varchar 存数字,用 datetime2 代替 datetime,varchar 长度别超实际需求,文本用 nvarchar(max)。
📋 目录
  1. 数值类型详解
  2. 字符类型
  3. 日期时间类型
  4. 二进制和特殊类型
  5. 设计指南
  6. 性能优化
  7. 常见错误
A A

SQL Server 字段类型选择是数据库设计的核心,选错了类型会导致性能问题、存储浪费或数据不准确。推荐优先用 int 而非 varchar 存数字,用 datetime2 代替 datetime,varchar 长度别超实际需求,文本用 nvarchar(max)。

数值类型详解

tinyint:0-255,无符号小整数,节省空间。
smallint:-32,768 到 32,767,适合年龄、ID。
int:-2^31 到 2^31-1,最常用主键类型。
bigint:超大整数,用在计数器。
decimal(p,s):精确小数,p总位数 s小数位,如 decimal(10,2) 存金额。
避免 float/double,精度问题多。

字符类型

char(n):固定长度,高效但浪费空间,如邮编。
varchar(n):变长,最常用,n≤8000。
varchar(max):超大文本。
nchar/nvarchar:支持Unicode,中文用这个。
nvarchar(max):大文本Unicode。
text/ntest 已弃用,用 varchar(max) 代替。

日期时间类型

date:只存日期。
time:只存时间。
datetime2:高精度,推荐。
datetime:旧版,精度差。
smalldatetime:节省空间。
timestamp:行版本,不是时间。

二进制和特殊类型

binary/varbinary:存图片文件。
varbinary(max):大文件。
xml:存XML。
hierarchyid:树结构。
sql_variant:多种类型,慎用。
uniqueidentifier:GUID,主键唯一。

SQL SERVER字段类型详解,网友推荐必读的数据库设计指南

设计指南

1. 主键用 int 或 bigint 自增。
2. 外键同主键类型。
3. 字符串长度按实际+20%预留。
4. 金额用 decimal。
5. 日期用 datetime2(3)。
6. 避免 NULL,除非必要,用默认值。
7. 索引字段别用 varchar(max)。

性能优化

字段类型一致性:JOIN 时类型必须匹配。
存储大小:tinyint 1字节,varchar 实际长度+2。
避免 sql_variant,隐式转换慢。
Unicode 只在需要时用,节省一半空间。

常见错误

用 varchar 存数字,导致排序错。
datetime 存时间戳,精度丢。
忽略 COLLATE,中文乱码。
大文本放表头,页分裂多。

Q: int 和 bigint 什么时候用?
A: ID小于20亿用int,超大计数用bigint。
Q: varchar(n) n多大合适?
A: 实际最大长度*1.2,≤255最佳。
Q: 中文字段用什么类型?
A: nvarchar。
Q: 存图片用什么字段?
A: varbinary(max),但优先文件系统+路径。
Q: NULL 和空字符串区别?
A: NULL无值,空字符串有值但空,业务区分用。