数值类型
bigint
- 含义:用于存储大范围的整数,是 8 字节(64 位)有符号整数类型。
- 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 。
- 场景:适合存储像订单编号(可能很大)、系统中需要大范围计数的标识等,比如大型系统中大量数据的主键自增列(数据量极多,超出
int
范围时)。
bit
- 含义:用于存储布尔值,只能取 0、1 或
NULL
(部分数据库实现中,也可能用 BIT(1)
等形式,本质存布尔逻辑)。 - 特点:存储高效,1 字节可存储 8 个
bit
列(数据库内部优化存储)。 - 场景:表示开关状态(如是否启用、是否删除标记)、逻辑判断结果(是 / 否)等,比如用户表中 “是否 VIP” 字段。
decimal(18, 0)
、numeric(18, 0)
- 含义:
decimal
和 numeric
是同义词,用于存储精确的定点数。(18, 0)
中,18 是精度(总共可存储的数字位数),0 是小数位数(即存储整数) 。 - 范围:能精确存储从 0 到 10^18 - 1 之间的整数(因精度和小数位设置 ),若调整小数位,范围会变化。
- 场景:金融、财务领域存储金额(当不需要小数,如统计总金额整数部分)、数量(必须精确计数,不能有浮点误差)等,比如银行账户的总存款(以分为单位的整数存储时也可用,但一般金额场景可能设小数位 )。
float
- 含义:用于存储近似数值的浮点型数据,属于 IEEE 754 标准的单精度或双精度浮点数(SQL Server 中
float
等价于 float(53)
,是双精度 )。 - 特点:存储范围大,但存在精度损失(不能精确表示所有小数 )。
- 场景:科学计算、工程模拟等对精度要求不是绝对精确,但需要大范围数值的场景,比如物理实验中的测量数据(可能有微小误差可接受 )。
money
、smallmoney
- 含义:专门用于存储货币金额的数据类型。
money
是 8 字节,范围约 -922 万亿