当前位置: 首页 > news >正文

SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景

以下是 SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景:

数据类型类别数据类型解释内存占用适用场景
整数类型bigint用于存储范围较大的整数,范围是 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)8 字节需要存储非常大整数的场景,如统计海量数据的数量等。
int常用的整数类型,范围是 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)4 字节一般整数存储场景,如用户 ID、商品数量等。
smallint范围是 -2^15 (-32,768) 到 2^15-1 (32,767)2 字节存储较小范围整数的场景,如表示月份(1 - 12)等。
tinyint无符号整数,范围是 0 到 2551 字节存储非常小的正整数,如年龄(一般不会超过 255)等。
精确数值类型decimal(p, s)
numeric(p, s)
p 表示精度(总位数),s 表示小数位数。可精确存储小数,范围从 -10^38 +1 到 10^38 - 1。
例如 decimal(5, 2) 可存储如 123.45 这样的数。
p <= 9 时占 5 字节;
9 < p <= 19 时占 9 字节;
19 < p <= 28 时占 13 字节;
28 < p <= 38 时占 17 字节
需要精确计算小数的场景,如财务数据计算,货币金额存储等。
近似数值类型float(n)n 表示精度,n 为 1 - 24 时相当于 float(24),使用 4 字节;n 为 25 - 53 时相当于 float(53),使用 8 字节。
可表示范围约为 -1.79E + 308 到 1.79E + 308
4 字节(n 为 1 - 24)或 8 字节(n 为 25 - 53)不需要精确计算的浮点数存储场景,如科学计算中的近似值。
real单精度浮点数,范围约为 -3.40E + 38 到 3.40E + 384 字节对精度要求不高的浮点数存储,如一些统计数据的近似值。
日期和时间类型date仅存储日期,范围从 0001 - 01 - 01 到 9999 - 12 - 313 字节只需要存储日期信息的场景,如生日、订单日期等。
time仅存储时间,精度可到 100 纳秒,范围从 00:00:00.0000000 到 23:59:59.99999993 - 5 字节(根据精度)只需要存储时间信息的场景,如会议时间、营业时间等。
datetime存储日期和时间,范围从 1753 - 01 - 01 00:00:00 到 9999 - 12 - 31 23:59:59,精度为 3.33 毫秒8 字节同时需要日期和时间信息,且对精度要求不是特别高的场景。
datetime2相比 datetime 有更高的精度,范围从 0001 - 01 - 01 00:00:00 到 9999 - 12 - 31 23:59:59.9999999,精度可到 100 纳秒6 - 8 字节(根据精度)需要更高精度日期和时间存储的场景。
smalldatetime存储日期和时间,范围从 1900 - 01 - 01 00:00:00 到 2079 - 06 - 06 23:59:59,精度为 1 分钟4 字节对日期和时间范围要求较小,且精度要求不高的场景。
datetimeoffset存储日期、时间和时区偏移量,范围从 0001 - 01 - 01 00:00:00 到 9999 - 12 - 31 23:59:59.9999999,精度可到 100 纳秒8 - 10 字节(根据精度)涉及不同时区日期和时间存储的场景。
字符串类型char(n)固定长度的字符串,n 表示字符串长度,范围是 1 - 8000。如果存储的字符串长度小于 n,会用空格填充。n 字节存储长度固定的字符串,如身份证号码(固定 18 位)等。
varchar(n)可变长度的字符串,n 表示最大长度,范围是 1 - 8000。只占用实际存储字符串的长度加 2 字节(用于记录长度)。实际字符串长度 + 2 字节存储长度可变的字符串,如用户名、地址等。
text用于存储大量文本数据,最大长度为 2^31 - 1(2,147,483,647)个字符。实际字符串长度 + 4 字节存储较长的文本内容,如文章内容、备注信息等,但从 SQL Server 2016 开始不推荐使用,建议用 varchar(max) 替代。
varchar(max)可变长度的字符串,最大长度为 2^31 - 1(2,147,483,647)个字符。实际字符串长度 + 2 字节(长度小于 8000 时)或 4 字节(长度大于 8000 时)存储非常长的可变长度字符串,如大型文档等。
Unicode 字符串类型nchar(n)固定长度的 Unicode 字符串,n 表示字符串长度,范围是 1 - 4000。每个字符占 2 字节。2 * n 字节存储固定长度的 Unicode 字符串,如一些多语言环境下固定长度的名称。
nvarchar(n)可变长度的 Unicode 字符串,n 表示最大长度,范围是 1 - 4000。只占用实际存储字符串的长度加 2 字节(用于记录长度),每个字符占 2 字节。2 * 实际字符串长度 + 2 字节存储可变长度的 Unicode 字符串,适用于多语言环境下的用户名、描述等。
ntext用于存储大量 Unicode 文本数据,最大长度为 2^30 - 1(1,073,741,823)个字符。2 * 实际字符串长度 + 4 字节存储较长的 Unicode 文本内容,但从 SQL Server 2016 开始不推荐使用,建议用 nvarchar(max) 替代。
nvarchar(max)可变长度的 Unicode 字符串,最大长度为 2^31 - 1(2,147,483,647)个字符。每个字符占 2 字节。2 * 实际字符串长度 + 2 字节(长度小于 4000 时)或 4 字节(长度大于 4000 时)存储非常长的可变长度 Unicode 字符串,适用于多语言环境下的大型文档等。
二进制类型binary(n)固定长度的二进制数据,n 表示长度,范围是 1 - 8000。如果存储的二进制数据长度小于 n,会用 0x00 填充。n 字节存储固定长度的二进制数据,如加密密钥等。
varbinary(n)可变长度的二进制数据,n 表示最大长度,范围是 1 - 8000。只占用实际存储二进制数据的长度加 2 字节(用于记录长度)。实际二进制数据长度 + 2 字节存储可变长度的二进制数据,如图片、文件等较小的二进制对象。
image用于存储大量二进制数据,最大长度为 2^31 - 1(2,147,483,647)字节。实际二进制数据长度 + 4 字节存储较大的二进制对象,如大型图片、视频等,但从 SQL Server 2016 开始不推荐使用,建议用 varbinary(max) 替代。
varbinary(max)可变长度的二进制数据,最大长度为 2^31 - 1(2,147,483,647)字节。实际二进制数据长度 + 2 字节(长度小于 8000 时)或 4 字节(长度大于 8000 时)存储非常大的可变长度二进制数据,如大型文件、高清视频等。
其他类型bit只能存储 0、1 或 NULL,用于表示布尔值1 字节表示布尔类型的数据,如是否启用、是否删除等。
uniqueidentifier存储全局唯一标识符(GUID),是一个 16 字节的二进制数据16 字节用于在分布式系统中唯一标识记录,如在多个数据库之间同步数据时作为唯一标识。
xml用于存储 XML 数据实际 XML 数据长度 + 额外开销存储和处理 XML 格式的数据,如配置文件、数据交换等。

相关文章:

  • golang不使用锁的情况下,对slice执行并发写操作,是否会有并发问题呢?
  • linux实现ARP协议
  • 数据结构每日一题day3(顺序表)★★★★★
  • css/scss(at-rules)基础使用(basic use)
  • LangChain开发(九)基于Rag实现文档问答
  • 啸叫抑制(AFS)从算法仿真到工程源码实现-第四节-数据仿真
  • Day15 -实例 端口扫描工具 WAF识别工具的使用
  • 【MyBatisPlus】MyBatisPlus介绍与使用
  • spring boot + thymeleaf整合完整例子
  • ES6-Symbol
  • CTF题目《高明的黑客》(强网杯 2019)Write up
  • 靶场(十八)---小白心得思路分享---shenzi
  • 数据库三级填空+应用(2)
  • 使用 gone.WrapFunctionProvider 快速接入第三方服务
  • vue数字公式篇 Tinymce结合使用(二)
  • Python图像处理——基于CSRNet的人群密度检测系统(Pytorch框架)
  • 【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权相关工具类代码
  • 基于深度学习的图像识别技术在智能安防中的应用
  • 设计模式代码
  • 【sylar-webserver】5 协程调度模块
  • 电话费被私改成48元套餐长达数年,投诉后移动公司退补600元话费
  • 准85后青海海北州副州长、州公安局局长李贤荣赴山东临沂挂职
  • 北上广深还是小城之春?“五一”想好去哪玩了吗
  • 加拿大今日大选:房价、印度移民和特朗普,年轻人在焦虑什么?
  • 《沙尘暴》:用贴近生活的影像和表演拍摄悬疑剧
  • 下任美联储主席热门人选沃什:美联储犯下“系统性错误”,未能控制一代人以来最严重的通胀