学习SQL SERVER 就不得不了解数据类型,以下是 SQL Server 中常见数据类型的分类及通俗解释,适合初学者快速理解:
一、字符串类型(文本类)
- CHAr(n)
- 固定长度的字符串,比如 CHAr(10) 总是占用 10 个字符的空间。
- 适合存储长度固定的内容(如身份证号、国家代码)。
- VARCHAr(n)
- 可变长度的字符串,按实际内容长度占用空间。
- 适合存储长度不固定的文本(如用户名、地址),VARCHAr(MAX) 可存最大 2GB 的文本。
- NCHAr(n) 和 NVARCHAr(n)
- 类似 CHAR 和 VARCHAR,但支持Unicode字符(如中文、日文)。
- 占用空间是普通字符串的 2 倍(因为 Unicode 需要更多存储)。
二、数值类型
- 整数类型
- TINYINT:0 到 255(如年龄)。
- SMALLINT:-3万到 3万左右(如班级人数)。
- INT:-21亿到 21亿(常用整数类型)。
- BIGINT:超大整数(如全球人口数)。
- 小数类型
- DECIMAL(p, s) 或 NUMERIC(p, s)
- 精确小数,p 是总位数,s 是小数位数。
- 例如 DECIMAL(5,2) 可存 123.45(总5位,小数2位)。
- 适合金额、科学计算等需要精确的场景。
- FLOAT 和 REAL
- 近似数值,适合科学计算,但可能有微小精度误差。
- 例如 FLOAT(24) 是单精度,FLOAT(53) 是双精度。
三、日期和时间类型
- DATE
- 仅存储日期,如 2023-10-01。
- TIME
- 仅存储时间,如 14:30:00.123。
- DATETIME
- 日期 + 时间,范围 1753-01-01 到 9999-12-31,精度到毫秒。
- DATETIME2
- 更精确的日期时间,范围更大(0001-01-01 到 9999-12-31),精度更高(纳秒级)。
- SMALLDATETIME
- 精简版日期时间,精度到分钟,范围较小。
- DATETIMEOFFSET
- 带时区的日期时间,如 2023-10-01 14:30:00 +08:00。
四、二进制类型
- BIT
- 存储 0 或 1,相当于布尔值(如 true/false)。
- BINARY(n) 和 VARBINARY(n)
- 存储二进制数据(如图片、文件)。
- BINARY(10) 固定长度,VARBINARY(MAX) 可变长度(最大 2GB)。
五、其他特殊类型
- UNIQUEIDENTIFIER
- 全局唯一标识符(GUID),如 6F9619FF-8B86-D011-B42D-00C04FC964FF。
- XML
- 专门存储 XML 格式的数据。
- GEOGRAPHY 和 GEOMETRY
- 存储地理空间数据(如地图坐标)。
- MonEY 和 SMALLMONEY
- 存储货币值,固定小数位数(4位)。
六、过时类型(不建议使用)
- TEXT、NTEXT、IMAGE
- 旧版本的大文本/二进制类型,已被 VARCHAr(MAX)、NVARCHAr(MAX)、VARBINARY(MAX) 取代。
通俗总结
- 文本:用 VARCHAR(普通文本)或 NVARCHAR(带中文)。
- 数字:整数用 INT,小数用 DECIMAL。
- 日期:精确时间用 DATETIME2,简单日期用 DATE。
- 二进制:文件用 VARBINARY(MAX)。
- 唯一值:用 UNIQUEIDENTIFIER 生成 GUID。
根据实际需求选择类型,避免浪费存储空间!
