分享

SQL Server数据库数据类型详解

 流楚丶格念 2022-01-14

文章目录

1. 整数型

整数包括bigint、int、smallint和tinyint 4类。

● bigint(大整数)

精度为19位,长度为8字节,数值范围为-263~263-1。

● int(整数)

精度10位,长度为4字节,数值范围为-231~231-1。

● smallint(短整数)

精度为10位,长度为2字节,数值范围为-215~215–1。

● tinyint(微短整数)

精度为3位,长度为1字节,数值范围为0~255。

2. 精确数值型

精确数值型包括decimal 和 numeric两类,这两种数据类
型在SQL Server中,在功能上是完全等价的。
精确数值型数据由整数部分和小数部分构成,可存储从 -1038 +1 到 1038–1 的固定精度和小数位的数字数据,它存储长度最少为5字节,最多为17字节。
精确数值型数据的格式是:

numeric | decimal(p[,s])

其中p为精度,s为小数位数,s的缺省值为0。
例如指定某列为精确数值型,精度为7,小数位数为2,则为 decimal(7,2)。

3. 浮点型

浮点型又称近似数值型,近似数值数据类型包括float[(n)]和real两类,这两类通常都使用科学记数法表示数据。科学记数法的格式为:

尾数E阶数
  
其中,阶数必须为整数。
例如,6.804 E9,3.682-E6,7 8594E-8等都是浮点型数据。

● real

精度为7位,长度为4字节,数值范围为-3.40E + 38~3.40E + 38。

● float[(n)]

当n在1~24之间时,精度为7位,长度为4字节,数值范围为-3.40E + 38~3.40E + 38。
当n在25~53之间时,精度为15位,长度为8字节,数值范围为- 1.79E+308~1.79E+308。

4. 货币型

处理货币的数据类型有money和smallmoney,它们用十进制数表示货币值。

●money

精度为19,小数位数为4、长度为8字节,数值范围为-263~263-1。

● smallmoney

精度为10,小数位数为4、长度为4字节,数值范围–231 ~ 231 – 1。

5. 位型

SQL Server中的位(bit)型数据只存储0和1,长度为一个字节,相当于其它语言中的逻辑型数据。当一个表中有小于8位的bit列,将作为一个字节存储,如果表中有9到16位bit列,将作为两个字节存储,依此类推。
当为bit类型数据赋0时,其值为0;而赋非0时,其值为1。
字符串值TRUE和FALSE可以转换的bit 值:TRUE转换为1,FALSE转换为0。

6. 字符型

字符型数据用于存储字符串,字符串中可包括字母数字和其它特殊符号。在输入字符串时,需将串中的符号用单引号或双引号括起来,如’def’、“Def<Ghi”。

●char[(n)]

固定长度字符数据类型,其中n定义字符型数据的长度,n在1~8000之间,默认值为1。若输入字符串长度小于n时,则系统自动在它的后面添加空格以达到长度n。例如某列的数据类型为char(100),而输入的字符串为"NewYear2013",则存储的是字符NewYear2013和89个空格。若输入字符串长度大于n,则截断超出的部分。当列值的字符数基本相同时可采用数据类型char[(n)]。

●varchar[(n)]

可变长度字符数据类型,其中n的规定与定长字符数据类型char[(n)]中n完全相同,与char[(n)]不同的是 varchar(n) 数据类型的存储空间随列值的字符数而变化。例如,表中某列的数据类型为varchar(100),而输入的字符串为" NewYear2013",则存储的字符NewYear2013的长度为11字节,其后不添加空格,因而varchar(n) 数据类型可以节省存储空间,特别在列值的字符数显著不同时。

7. Unicode字符型

Unicode是“统一字符编码标准”,用于支持国际上非英语语种的字符数据的存储和处理。Unicode字符型包括nchar[(n)]和nvarchar[(n)]两类。nchar[(n)]、nvarchar[(n)]和char[(n)]、varchar(n)类似,只是前者使用Unicode字符集,后者使用ASCII字符集。

● nchar[(n)]

固定长度Unicode数据的数据类型,n的取值为1~4000,长度为2n字节,若输入的字符串长度不足n,将以空白字符补足。

● nvarchar[(n)]

可变长度Unicode数据的数据类型,n的取值为1~4000,长度是所输入字符个数的两倍。

8. 文本型

由于字符型数据的最大长度为8000个字符,当存储超出上述长度的字符数据(如较长的备注、日志等),即不能满足应用需求,此时需要文本型数据。文本型包括text和ntext两类,分别对应ASCII字符和Unicode字符。

● text

最大长度为231-1(2,147,483,647)个字符,存储字节数与实际字符个数相同。

● ntext

最大长度为230-1(1,073,741,823)个Unicode字符,存储字节数是实际字符个数的2倍。

9. 二进制型

二进制数据类型表示的是位数据流,包括binary(固定长
度)和varbinary(可变长度)两种。

● binary[(n)]

固定长度的n个字节二进制数据,n的取值范围为1~8000,
默认值为1。
  binary(n)数据的存储长度为:n+4个字节。若输入的数据
长度小于n,则不足部分用0填充;若输入的数据长度大于n,
则多余部分被截断。
输入二进制值时,在数据前面要加上0x,可以用的数字符号为09、AF(字母大小写均可)。例如0xBE、0x5F0C分别表示值BE和5F0C。由于每字节的数最大为FF,故在“0x”格式的数据每两位占1个字节,二进制数据有时也被称为十六进制数据。

●varbinary[(n)]

n个字节变长二进制数据,n取值范围为1~8000,默认值为1。varbinary(n)数据的存储长度为:实际输入数据长度+4个字节。

10. 日期时间类型

● datetime

datetime类型可表示的日期范围从1753年1月1日到9999年12月31日的日期和时间数据,精确度为百分之三秒(3.33毫秒或0.00333 秒)。datetime类型数据长度为8字节,日期和时间分别使用4个字节存储。前4字节用于存储基于1900年1月1日之前或之后的天数,正数表示日期在1900年1月1日之后,负数则表示日期在1900年1月1日之前。后4个字节用于存储距12:00(24小时制)的毫秒数。默认的日期时间是January 1, 1900 12:00 A.M。可以接受的输入格式有:January 10 2012、Jan 10 2012、JAN 10 2012、January 10, 2012等。

●smalldatetime

Smalldatetime与datetime数据类型类似,但日期时间范围
较小,表示从1900年1月1日到2079年6月6日的日期和时间,存储长度为4字节。

●date

date类型可表示从公元元年1月1日到9999年12月31日期,表示形式与datetime数据类型的日期部分相同,只存储日期数据,不存储时间数据,存储长度为3个字节。

●time

time数据类型只存储时间数据,表示格式为“hh:mm:ss[.nnnnnnn]”。hh表示小时,范围为0到23。mm表示分钟,范围为0到59。ss表示秒数,范围为0到59。n是0 到7位数字,范围为0到9999999,表示秒的小数部分,即微秒数。所以time数据类型的取值范围为00:00:00.0000000到23:59:59.9999999。time类型的存储大小为5个字节。另外可以自定义time类型微秒数的位数,例如time(1)表示小数位为1,默认为7。

●datetime2

新的datetime2数据类型和datetime类型一样,也用于存储日期和时间信息。但是datetime2类型取值范围更广,日期部分取值范围从公元元年1月1日到9999年12月31日,时间部分的取值范围从00:00:00.0000000到23:59:59.999999。另外,用户还可以自定义datetime2数据类型中微秒数的位数,例如datetime(2)表示小数位数为2。

● datetimeoffset

datetimeoffset数据类型也用于存储日期和时间信息,取值范围与datetime2类型相同。但datetimeoffset类型具有时区偏移量,此偏移量指定时间相对于协调世界时(UTC)偏移的小时和分钟数。datetimeoffset的格式为“YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]”,其中hh为时区偏移量中的小时数,范围为00到14,mm为时区偏移量中的额外分钟数,范围为00到59。

11. 时间戳型

反映系统对该记录修改的相对(相对于其他记录)顺序,标识符是timestamp,timestamp类型数据的值是二进制格式数据,其长度为8字节。若创建表时定义一个列的数据类型为时间戳类型,那么每当对该表加入新行或修改已有行时,都由系统自动将一个计数器值加到该列,即将原来的时间戳值加上一个增量。

12. 图像数据类型

用于存储图片、照片等,标识符为image,实际存储的是可变长度二进制数据,介于 0 与 231-1 (2,147,483,647) 字节之间。

13. 其它数据类型

● cursor

游标数据类型,用于创建游标变量或定义存储过程的输出参数

● sql_variant

一种存储SQL Server支持的各种数据类型(除text、ntext、image、timestamp 和 sql_variant 外)值的数据类型。

● table

用于存储结果集的数据类型,结果集可以供后续处理。

● uniqueidentifier

唯一标识符类型,系统将为这种类型的数据产生唯一标识值。

● xml

用来在数据库中保存xml文档和片段的一种类型,文件大小不能超过2GB。

● hierarchyid

hierarchyid数据类型是SQL Server新增加的一种长度可变的系统数据类型,可使用 hierarchyid表示层次结构中置。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多