Ubuntu SQL Server支持的数据类型
SQL Server的数据类型体系涵盖字符串、数值、日期时间、二进制、布尔及其他特殊类型,以下是具体分类及常见类型说明:
用于存储字符数据,分为ASCII字符型和Unicode字符型:
char(n):固定长度字符串(最多8000字符),不足长度时用空格填充,适合存储长度固定的数据(如手机号、身份证号)。varchar(n):可变长度字符串(最多8000字符),仅占用实际需要的存储空间,适合存储长度变化的数据(如用户名、地址)。text:可变长度字符串(最多2GB),用于存储大量文本(如文章内容),但SQL Server 2016及以上版本推荐用varchar(max)替代。nchar(n):固定长度Unicode字符串(最多4000字符),每个字符占用2字节。nvarchar(n):可变长度Unicode字符串(最多4000字符),每个字符占用2字节。ntext:可变长度Unicode字符串(最多2GB),用于存储大量Unicode文本,SQL Server 2016及以上版本推荐用nvarchar(max)替代。用于存储整数、浮点数及精确数值:
tinyint:1字节,范围0~255,适合存储小整数(如年龄、状态码)。smallint:2字节,范围-32768~32767,适合存储较小范围的整数(如月份、天数)。int:4字节,范围-2147483648~2147483647,是最常用的整数类型(如用户ID、订单号)。bigint:8字节,范围-9223372036854775808~9223372036854775807,适合存储极大整数(如大数据量计数)。float(n):近似浮点数,精度取决于n(1~53,默认53),范围约±1.18E-38~±3.40E+38,适合存储科学计算数据(如温度、距离)。real:4字节,等同于float(24),范围约±1.18E-38~±3.40E+38,精度较低。decimal(p,s)/numeric(p,s):精确小数,p为总位数(1~38),s为小数位数(0~p),范围约±1.0E-38~±7.9E+38,适合存储财务数据(如金额、税率)。用于存储日期、时间及时间间隔:
date:3字节,范围1753年1月1日~9999年12月31日,仅存储日期(如生日、节假日)。time:3~5字节,范围00:00:00~23:59:59.9999999,仅存储时间(如上班时间、会议时间)。datetime:8字节,范围1753年1月1日~9999年12月31日,精度3.33毫秒,存储日期和时间(如创建时间、修改时间)。datetime2:6~8字节,范围1753年1月1日~9999年12月31日,精度100纳秒,是SQL Server推荐的更高精度日期时间类型。smalldatetime:4字节,范围1900年1月1日~2079年6月6日,精度1分钟,适合存储不需要高精度的日期时间(如会议安排)。datetimeoffset:8~10字节,范围1753年1月1日~9999年12月31日,精度100纳秒,包含时区偏移(如跨时区会议的开始时间)。用于存储二进制数据(如图片、文件、哈希值):
binary(n):固定长度二进制数据(最多8000字节),不足长度时用0填充(如加密密钥、哈希值)。varbinary(n):可变长度二进制数据(最多8000字节),仅占用实际需要的存储空间(如图片缩略图、小文件)。image:可变长度二进制数据(最多2GB),用于存储大量二进制数据(如文档、视频),SQL Server 2016及以上版本推荐用varbinary(max)替代。bit:1字节,取值0(False)、1(True)或NULL,用于存储逻辑值(如是否启用、是否删除)。money(8字节,范围-922337203685477.5808~922337203685477.5807,精度到千分之一)和smallmoney(4字节,范围-214748.3648~214748.3648,精度到千分之一),用于存储货币金额(如订单总价、工资)。uniqueidentifier:16字节,存储全局唯一标识符(GUID),适合生成唯一键(如用户ID、订单ID)。xml:存储格式化的XML数据(最多2GB),用于存储结构化文档(如配置文件、产品描述)。varchar(max)或nvarchar(max)存储,并添加CHECK约束验证JSON格式。以上数据类型覆盖了SQL Server的核心需求,开发者可根据业务场景选择合适的类型(如存储大量文本用varchar(max),存储精确金额用decimal,存储唯一键用uniqueidentifier)。