SQLServer之数据类型

时间:2023-11-13 23:52:08

1.整数数据类型
整数数据类型是常用的数据类型之一,主要用于存储数值,可以直接进行数据运算而不必使用函数转换.
(1).bigint
每个bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。
(2).int
int或者integer,每个int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,,可以表示-2的31次方~2的31次方-1范围内的所有整数。
(3).smallint
每个smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,,可以表示-2的15次方~2的15次方-1范围内的所有整数。
(4).tinyint
每个tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数.

2.浮点数据类型
浮点数据类型存储十进制小数,用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;
浮点数值的数据则Sql Server中采用了只入不舍的方式进行存储,即当且仅当要舍入的数是一个非零数时,对其保留数字部分的最低有效位上加1,并进行必要的近位。
(1).real
可以存储正的或者负的十进制数值,它的存储范围从-3.40E+38~-1.18E-38、0以及1.18E-38~3.40E+38.每个real类型的数据占用4个字节的存储空间。
(2)float[(n)]
其中为用于存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。如果指定了n它必须是介于1和53之间的某个值。n的默认值为53.
其范围从-1.79E+308~-2.23E-308、0以及2.23E+308~1.79E-308。如果不指定数据类型float的长度,它占用8个字节的存储空间。float数据类型可以写成float(n)的形式,
n为指定float数据的精度,n为1~53之间的整数值。
当n取1~24时,实际上定义了一个real类型的数据,系统用4个自己存储它。当n取25~53时,系统认为其是float类型,用8个字节存储它。
(3).decimal[(p[,s])]和numeric[(p[,s])
带固定精度和小数位数的数值数据类型。使用最大精度时,有效值从-10^38+1~10^38-1。numeric在功能上等价于decimal。
p(精度)指定了最多可以存储十进制数字的总位数,包括小数点左边和右边的位数,该精度必须是从1到最大精度38之间的值,默认精度为18.
s(小数位数)指定小数点右边可以存储的十进制数字的最大位数,小数位数必须是从0到p之间的值,仅在指定精度后才可以指定小数的位数。默认小数位数是0;
因此,0<=s<=p。最大存储大小基于精度而变化。例如:decimal(10,5)表示共有10位数,其中整数5位,小数5位。

3.字符数据类型
字符数据类也是Sql Server中最常用的数据类型之一,用来存储各种字符,数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号。
(1)char(n)
当用char数据类型存储数据时,每个字符和符号占用一个字节存储空间,n表示所有字符所占的存储空间,n的取值为1~8000。
如不指定n的值,系统默认n的值为1。若输入数据的字符串长度小于n,则系统自动在其后添加空格来填满设定好的空间;若输入的数据过长,则会截掉其超出部分。
(2)varhcar(n|max)
n为存储字符的最大长度,其取值范围是1~8000,但可根据实际存储的字符数改变存储空间,max表示最大存储大小是2的31次方-1个字节。
存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。如varchcar(20),则对应的变量最多只能存储20个字符,不够20个字符的按实际存储。
(3)nchar(n)
n个字符的固定长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。
此数据类型采用Unicode字符集,因此每一个存储单位占两个字节,可将全世界文字囊括在内(当然除了部分生僻字)。
(4)nvarchar(n|max)
与varchar类似,存储可变长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。
max指最大存储大小为2的31次方-1字节。存储大小是输入字符个数的两倍+2个字节。所输入的数据长度可以为0个字符.

4.日期和时间数据类型
(1).date
存储用字符串表示的日期数据,可以表示0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日)间的任意日期值。数据格式为“YYYY-MM-DD”:
YYYY:表示年份的四位数字,范围为0001~9999;
MM:表示指定年份中月份的两位数字,范围为01~12;
DD:表示指定月份中某一天的两位数字,范围为01~31(最高值取决于具体月份)
该数据类型占用3个字节的空间。
(2).time
以字符串形式记录一天的某个时间,取值范围为00:00:00.0000000~23:59:59.9999999,数据格式为“hh:mm:ss[.nnnnnnn]”:
hh:表示小时的两位数字,范围为0~23。
mm:表示分钟的两位数字,范围为0~59。
ss:表示秒的两位数字,范围为0~59。
n*是0~7为数字,范围为0~9999999,它表示秒的小部分.
time值在存储时占用5个字节的空间。
(3).datetime
用于存储时间和日期数据,从1753年1月1日到9999年12月31日,默认值为1900-01-01 00:00:00,当插入数据或在其它地方使用时,需用单引号或双引号括起来。
可以使用“/”、“-”和“.”作为分隔符。该类型数据占用8个字节的空间。
(4).datetime2
datetime的扩展类型,其数据范围更大,默认的最小精度最高,并具有可选的用户定义的精度。默认格式为:YYYY-MM-DD hh:mm:ss[.fractional seconds],
日期的存取范围是0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日).
(5).smalldatetime
smalldatetime类型与datetime类型相似,只是其存储范围是从1900年1月1日到2079年6月6日,当日期时间精度较小时,刻印使用smalldatetime,该类型数据占用4个字节的存储空间。
(6).datetimeoffset
用于定义一个采用24小时制与日期相组合并可识别时区的时间。默认格式是:“YYYY-MM-DD hh:mm:ss[.nnnnnnn][{+|-}hh:mm]”:
hh:两位数,范围是-14~14
mm:两位数,范围为00~59;
这里hh是时区偏移量,该类型数据中保存的是世界标准时间(UTC)值,eg:要存储北京时间2011年11月11日12点整,
存储时该值将是2011-11-11 12:00:00+08:00,因为北京处于东八区,比UTC早8个小时。存储该数据类型数据时默认占用10个字节大小的固定存储空间.

5.文本和图形数据类型
(1).text
用于存储文本数据,服务器代码页中长度可变的非Unicode数据,最大长度为2的31次方-1(2147 483 647)个字符。当服务器代码页使用双字节字符时,存储仍是2147 483 647字节。
(2)ntext
与text类型作用相同,为长度可变的非Unicode数据,最大长度为2的30次方-1(1073 741 283)个字符。存储大小是所输入字符个数的两倍(以字节为单位).
(3).image
长度可变的二进制数据,范围为:0~2的31次方-1个字节。用于存储照片、目录图片或者图画,容量也是2147 483 647个字节,
由系统根据数据的长度自动分配空间,存储该字段的数据一般不能使用insert语句直接输入。

6.货币数据类型
(1).money
用于存储货币值,取值范围为正负922 337 213 685 477.580 8之间。money数据类型中整数部分包含19个数字,小数部分包含4个数字,
因此money数据类型的精度是19,存储时占用8个字节的存储空间。
(2).smallmoney
与money类型相似,取值范围为214 748.346 8之间,smallmoney存储时占用4个字节存储空间。输入数据时在前面加上一个货币符号,如人民币为¥或其它定义的货币符号。

7.位数据类型
bit称为位数据类型,只取0或1为值,长度1字节。bit值经常当作逻辑值用于判断true(1)或false(0),输入非0值时系统将其替换为1。

8.二进制数据类型
(1)binary(n)
长度为n个字节的固定长度二进制数据,其中n是从1~8000的值。存储大小为n个字节。在输入binary值时,必须在前面带0x,
可以使用0xAA5代表AA5,如果输入数据长度大于定于的长度,超出的部分会被截断。
(2).varbinary(n|max)
可变长度二进制数据。其中n是从1~8000的值,max指示存储大小为2的31次方-1字节。存储大小为所输入数据的实际长度+2个字节。
在定义的范围内,不论输入的时间长度是多少,binary类型的数据都占用相同的存储空间,即定义时空间,而对于varbinary类型的数据,在存储时实际值的长度使用存储空间.