SQL Server数据类型查询笔记

概述

在 SQL Server 中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。 数据类型是一种属性,用于指定对象可保存的数据的类型:整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等。SQL Server 提供一组系统数据类型,这些类型定义了可以与 SQL Server 配合使用的所有类型的数据。为了方便查询下面把这些数据类型按照不同的类别整理成表格。

精确数字

数据类型范围存储
bigint-9,223,372,036,854,775,808(-2^ 63) 到 9,223,372,036,854,775,807(2^ 63-1)8 字节
int-2,147,483,648(-2^ 31) 到 2,147,483,647(2^31-1)4 个字节
smallint-32,768 (-2^ 15) 到 32,767(2^15-1)2 字节
tinyint0(2^ 0-1) 到 255(2^8-1)1 字节
bit0 、1、null1 字节
money-922,337,203,685,477.5808 到 922,337,203,685,477.58078个字节
smallmoney-214,748.3648 到 214,748.36474个字节
decimal(p,s) | numeric(p,s)- 10^ 38 +1 到 10^38 - 15(1-9 p) | 9(10-19 p) | 13(20-28 p) | 17(29-38 p) 字节(p为精度值即小数点左右两侧数字数量的总数)

近似数字

数据类型范围存储
float(n)-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 3084(1-24 n) | 8 (25-53 n)字节 (n 为用于存储 float 数值尾数的位数,以科学计数法表示)
real-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 384个字节

日期和时间

数据类型范围存储
date0001-01-01 到 9999-12-313个字节
datetime1753-01-01 00:00:00 到 9999-12-31 23:59:59.9978个字节
datetime20001-01-01 00:00:00 到 9999-12-31 23:59:59.99999996(精度小于等于4) | 8(精度5-7) 字节(秒后面的保留位数为精度)
smalldatetime1900-01-01 00:00:00 到 2079-06-06 23:59:594个字节
datetimeoffset0001-01-01 00:00:00 -14:00 到 9999-12-31 23:59:59.9999999 +14:0010个字节
time00:00:00.0000000 到 23:59:59.99999995个字节

字符串

数据类型范围存储备注
char(n)n定义字符串的大小单位字节,可选值(1-8000)n个字节固定大小字符串
varchar(n | max)n定义字符串的大小单位字节,可选值(1-8000) ,max指明上限为2^31-1 个字节n+2个字节可变大小字符串,超出8000字节使用max否则定义n
text最大2,147,483,647(2^31-1) 个字节字符串长度长度可变的非 Unicode 数据

Unicode 字符串

数据类型范围存储备注
nchar(n)n定义字符串大小单位是双字节,可选值(1-4000)n*2个字节固定大小字符串
nvarchar(n | max)n定义字符串大小单位是双字节,可选值(1-4000),max指明上限为2^31-1 个字节n*2+2个字节可变大小字符串,超出4000双字节使用max否则定义n
ntext最大1,073,741,823(2^30 - 1)个字节字符串长度*2长度可变的 Unicode 数据

二进制字符串

数据类型范围存储备注
binary(n)n定义二进制数据长度单位字节,可选值(1-8000)n个字节数据为固定长度
varbinary(n | max)n定义二进制数据长度单位字节,可选值(1-8000) ,max指明上限为2^31-1 个字节数据的实际长度+2 个字节数据为可变长度,超出8000字节使用max否则定义n
image0 到 2,147,483,647 (2^31-1)个字节实际数据的长度长度可变的二进制数据

其他数据类型

数据类型描述备注
cursor这是变量或存储过程 OUTPUT 参数的一种数据类型,这些参数包含对游标的引用。对于 CREATE TABLE 语句中的列,不能使用 cursor 数据类型
rowversion公开数据库中自动生成的唯一二进制数字的数据类型。 rowversion 通常用作给表行加版本戳的机制。 存储大小为 8 个字节。timestamp 的数据类型为 rowversion 数据类型的同义词,并具有数据类型同义词的行为。 在 DDL 语句中,应尽量使用 rowversion,避免使用 timestamp,SQL Server后续版本将删除timestamp
hierarchyid一种长度可变的系统数据类型。 可使用 hierarchyid的值表示树层次结构中的位置。编码限制为 892 字节
uniqueidentifier16 字节 GUIDuniqueidentifier 数据类型的列或局部变量可通过使用 NEWID 或 NEWSEQUENTIALID 函数,或通过从 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式的字符串常量进行转换, 初始化为一个值,其中,每个 x 都是 0-9 或 a-f 范围内的十六进制数字。 例如,6F9619FF-8B86-D011-B42D-00C04FC964FF 为有效的 uniqueidentifier 值 。
sql_variantsql_variant 可以用在列、参数、变量和用户定义函数的返回值中 。 借助 sql_variant,这些数据库对象可以支持其他数据类型的值 。sql_variant 的最大长度可以是 8016 个字节 。类型为 sql_variant 的列可能包含不同数据类型的行 。例如,定义为 sql_variant 的列可以存储 int、binary 和 char 类型的值 。
xml存储 XML 数据的数据类型。 可在列中或者 xml 类型的变量中存储 xml 实例 。xml 数据类型实例所占据的存储空间大小不能超过 2 GB。
geometry平面空间数据类型 geometry 在 SQL Server 中作为公共语言运行时 (CLR) 数据类型实现。 此类型表示欧几里得(平面)坐标系中的数据。geometry 类型已进行预定义,可在每个数据库中使用。 您可以创建 geometry 类型的表列并对 geometry 数据进行操作,就像使用其他 CLR 类型一样。 可以用在持久化和非持久化计算列中。
geography地理空间数据类型 geography 是作为 SQL Server 中的 .NET 公共语言运行时 (CLR) 数据类型实现的。 此类型表示圆形地球坐标系中的数据。 geography 数据类型存储椭球体(圆形地球)数据geography 类型已进行预定义,可在每个数据库中使用。 你可以创建 geography 类型的表列并对 geography 数据进行操作,就像使用其他系统提供的数据类型一样。 可以用在持久化和非持久化计算列中。
table表是一种特殊的数据类型,可用于存储结果集以便进行后续处理。 table 主要用于临时存储一组作为表值函数结果集返回的行。 可将函数和变量声明为 table 类型。 table 变量可用于函数、存储过程和批处理中。 若要声明 table 类型的变量,请使用 DECLARE @local_variable。如果使用表变量存储的数据大于100行,则使用临时表将是更好的解决方案。

重要

SQL Server的未来版本中将删除ntext 、 text 和 image 这些数据类型。 请避免在新开发工作中使用这些数据类型,并考虑修改当前使用这些数据类型的应用程序。 请改用 nvarchar(max)、 varchar(max)和 varbinary(max) 。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵润强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值