说说SQL Server的数据类型
时间:2021-07-01 10:21:17
帮助过:4人阅读
float和real这两种数据类型用于表示浮点数值数据的大致数据类型,浮点数据为近似值。也因此,并非所有数据范围内的所有值都可以精确地表示,所以称为近似数字。
数据类型 |
范围 |
存储大小 |
float |
-1.79E+308~-2.23E-308以及2.23E-308~1.79E+308 |
取决于n的值,例如float(50) |
real |
-3.40E+38~1.18E-38、0以及1.18E-38~3.40E+38 |
4字节 |
float类型语法是:float【(n)】。n为用于存储float数值尾数的位数(以科学计数法表示)。因此可以确定精度和存储大小。n应是在1~53之间的某个数,n的默认值为53.
当n的取值范围是1~24时,精度为7位数,存储大小为4字节。当n的取值范围为25~53时,精度是15位数,存储大小为8字节。
real的ISO同义词为float(24).
1.5bit类型
bit类型的取值范围为1、0或NULL的整数数据类型。bit列的存储依据存储大小不同而不同。
字符串值TRUE和FALSE可以转换为以下bit值,TRUE转换为1,FALSE转换为0.
2、字符数据类型
字符数据类型共计6种,又分为字符串和Unicode字符串两类:
字符串包括char、varchar、text;
Unicode字符串包含nchar、nvarchar、ntext。
N“string”表示string是个Unicode字符串。Unicode常量被解释为Unicode数据,并且不适用代码页进行计算。Unicode常量确实有排序规则,主要用来控制比较和区分大小。
Unicode数据中的每个字符都使用两个字节来存储,而普通字符数据则使用一个字节来存储。
char为定长字符串,而varchar是变长字符串。但是不管是定长还是变长字符串,都应该有一个容量。
char【(n)】固定长度,长度为n个字节,n的取值范围是1~8000.而相比于varchar【(n|max)】可变长度,n的取值范围是1~8000.max指示最大存储大小是231-1字节。存储大小是输入数据的实际长度加2个字节,所以输入数据的长度可以是0个字符。
注意:
1.如果站点支持多语言,请考虑使用Unicode nchar或者nvarchar数据类型,以最大消除字符转换问题。如果使用char或varchar,建议a、如果列数据项的大小一致,则使用char;b、如果列数据项的大小差异相当大,则使用varchar,c、如果列数据项大小相差很大,而且大小可能超过8000字节,则使用varchar(max)。
2.当排序规则代码页使用双字节字符时,存储大小任然为n个字节,那么存储的字符就要除以2,例如varchar(10)只能放5个字符。
3.如果存储的是汉字,最好使用Unicode字符串类型。
4.如果数据量比较大,不建议使用text或者nchar类型,而是使用varchar(max)或者是nvarchar(max).
5.如果列数据项的大小总有差异,就使用varchar,因为定长就是在如果不足规定的位数时就使用空格填充。
3、日期和时间数据类型
数据类型 |
格式 |
范围 |
精确度 |
存储大小 |
time |
hh:mm:ss[.nnnnnnn] |
00:00:00.0000000~23:59:59.9999999 |
100纳秒 |
3~5字节 |
date |
YYYY-MM-DD |
0001-01-01~9999-12-31 |
1天 |
3字节 |
smalldatetime |
YYYY-MM-DD hh:mm:ss |
1900-01-01~2079-06-06 |
1分钟 |
4字节 |
datetime |
YYYY-MM-DD hh:mm:ss[.nnn] |
1754-01-01~9999-12-31 |
0.00333秒 |
8字节 |
datetime2 |
YYYY-MM-DD hh:mm:ss[.nnnnnnn] |
0001-01-01 00:00:00.000000~9999-12-31 23:59:59.9999999 |
100纳秒 |
6~8字节 |
datetimeoffset |
YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm |
0001-01-01 00:00:00.000000~9999-12-31 23:59:59.9999999 |
100纳秒 |
8~19字节 |
4、二进制数据类型
二进制数据类型提供了将文件存入数据库的可能。在日常编程中,可以将文件转换为二进制然后再存入数据库中,如图片、文件等等。但是这不是推荐用法。最好使用varbinary(max)来代替image数据类型。
binary【(n)】:固定长度的二进制数据类型,n的取值范围是1~8000,存储大小为n个字节。;
varbinary【(n|max)】:长度为n字节的可变长度二进制数据,n的取值范围是1~8000。max的最大存储大小为231-1字节。存储大小为:所输入数据的实际长度+2个字节。所以输入数据的长度可以是0字节。
如果没有在数据定义或者变量声明语句中指定n,则默认长度为1.如果没有使用CAST函数指定n,则默认长度是30.
5、其他数据类型
cursor:这是变量或存储过程OUTPUT参数的一种数据类型,这些参数包含对游标的引用。使用cursor数据类型创建的变量可以为空。对于CREATE TABLE语句中的列,不能使用cursor数据类型。
timestamp:用于表示SQL Server活动的先后顺序,以二进制格式表示。数据与插入数据或者日期和时间没有关系。
timestamp就是行版本。不过不建议在SQL Server中使用timestamp语法。
uniqueidentifier:由16字节的十六进制数字组成,表示全局唯一的。当表的记录行要求唯一时,它是非常有用的。很多时候用此类型来作为数据主键,因为它基本上是不会重复的。
hierarchyid:是一种长度可变的系统数据类型。可使用hierarchyid表示层次结构中的位置。
sql_variant:用于支持SQL Server支持的各种数据类型(不包括text、ntext、image、timestamp和sql_variant等)。可以在列、参数、变量和用户定义函数的返回值中。使得这些数据库对象能够支持其他数据类型的值。
说说SQL Server的数据类型
标签: