SQL_Server 之数据类型详解
⼀、前⾔
Sql Server的列中有数据类型属性,⽤于指定对象可保存的数据的类型,Sql Server中⽀持多种数据类型,包括字符类型、数值类型以及⽇期类型等。数据类型相当于⼀个容器,容器的⼤⼩决定了装的东西的多少,将数据分为不同的类型可以节省磁盘资源和空间。Sql Server会⾃动限制每个系统数据类型的取值范围,当插⼊数据库中的值超过了数据允许的范围时,Sql Server就会报错。⼆、整数数据类型bigint,8字节有符号int,4字节有符号smallint,2字节有符号
tinyint,1字节⽆符号三、浮点数据类型real,4字节有符号
float(n),n为指定float数据的精度,当n取153时,系统认为其为float类型,占8字节。如果不指定,也是占8字节。
decimal(p,s)和numeric(p,s),p(精度)指定了最多可以存储⼗进制数字的总位数,包括⼩数点左边和右边的位数,范围1~38,默认精度为18。s(⼩数位数)指定了⼩⿏点右边可以存取的⼗进制数字的最⼤位数,默认值为0。例如:decimal(10,5)表⽰共有10位数,其中整数5位,⼩数5位。四、字符数据类型
char(n),每⼀个字符和符号占⽤⼀个字节存储空间,n表⽰所有字符所占的存储空间,若输⼊数据的字
符串长度⼩于n,则系统⾃动在其后添加空格来填满设定好的空间,若输⼊的数据过长,则会截掉其超出部分。
varchar(n),存储⼤⼩时输⼊数据的实际长度加2个字节,n为存储字符的最⼤长度。如varchar(20),则对应的变量最多只能存储20个字符,不够20个字符的按实际存储。nchar(n),n个字符的固定长度Unicode字符数据,每⼀个存储单位占两个字节。
nvarchar(n),存储可变长度Unicode字符数据,存储⼤⼩是输⼊字符个数的两倍+2个字节。
char和varchar都是存储⾮Unicode字符集,不能存储中⽂,⼀个字符占⼀个字节;nchar和nvarchar都是存储Unicode字符集,可以存储中⽂,⼀个字符占两个字节。五、⽇期和时间数据类型
data,存储⽤字符串表⽰的⽇期数据,数据格式为“YYYY-MM-DD”;YYYY:表⽰年份的是为数字,范围000112;DD:表⽰⽉份中某⼀天的两位数字,范围为01~31;该数据类型占⽤3个字节空间。
time,以字符串形式记录⼀天的某个时间,数据格式为“hh:n”:hh:表⽰⼩时的两位数字,mm:表⽰分钟的两位数字,ss:表⽰秒的两位数字,n表⽰秒的⼩数部分。time值占⽤5个字节的空间。
datetime,⽤于存储时间和⽇期数据,从1753年1⽉1⽇到9999年12⽉31⽇,默认值为1900-01-01 00:
00:00,占⽤8字节空间。
datetime2
  datetime的扩展类型,其数据范围更⼤,默认的最⼩精度最⾼,并具有可选的⽤户定义的精度。默认格式为:YYYY-MM-DD hh:mm:ss[.fractional seconds],⽇期的存取范围是0001-01-01~9999-12-31(公元元年1⽉1⽇到公元9999年12⽉31⽇).smalldatetime
 smalldatetime类型与datetime类型相似,只是其存储范围是从1900年1⽉1⽇到2079年6⽉6⽇,当⽇期时间精度较⼩时,刻印使⽤smalldatetime,该类型数据占⽤4个字节的存储空间。
24时,实际上定义了⼀个real类型的数据,占4字节。当n取259999;MM:表⽰⽉份的两位数字,范围为01
六、位数据类型
bit,⽀取0或者1,长度1字节,经常当作逻辑值⽤于判断true(1)或false(0),输⼊⾮法值时系统将其替换为1。
七、⼆进制数据类型
binary(n),长度为n个字节的固定长度⼆进制数据,其中n是从1~8000的值。存储⼤⼩为n个字节。在输⼊binary值时,必须在前⾯带0x,可以使⽤0xAA5代表AA5,如果输⼊数据长度⼤于定于的长度,超出的部分会被截断。
varbinary(n),可变长度⼆进制数据。其中n是从1~8000的值,max指⽰存储⼤⼩为2的31次⽅-1字节。存储⼤⼩为所输⼊数据的实际长度+2个字节。在定义的范围内,不论输⼊的时间长度是多少,binary类型的数据都占⽤相同的存储空间,即定义时空间,⽽对于varbinary类型的数据,在存储时实际值的长度使⽤存储空间
decimal是整数数据类型⼋、其他数据类型
uniqueidentifier,16字节的GUID(Globally Unique Identifier,全球唯⼀标识符),是Sql Server根据⽹络适配器地址和主机CPU时钟产⽣的唯⼀号码,其中,每个为都是0f范围内的⼗六进制数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF,此号
9或a
码可以通过newid()函数获得,在全世界各地的计算机由此函数产⽣的数字不会相同

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。