(1)整数数据类型
整数数据类型是SQL Server 2014 中最常用的数据类型之一,主要用于存储整数值,如存放“年龄”、“工龄”等信息,数值型的数据可以直接进行运算处理。具体来说:SQL Server 2014的整数类型包含如下4种:
① Int (integer)
Int(或integer)的存储容量为4个字节,其中一个二进制位表示正负符号,一个字节8位。根据字节大小,用户可以算出它所能存储的数据容量为31位,存储范围为-231~231-1内所有的整数。
② Smallint
Smallint的存储量为2个字节,其中一个二进制位表示正负符号,剩余的15位用来存储数据内容,器存储范围为-215~215-1内所有的整数。
③ Tinyint
Tinyint只占用一个字节存储空间,用于存储0~255中所有的整数。
④ Bigint
Bigint是所有整数类型中存储量最大的,存储容量达到8个字节,可存储的数据范围为-263~263-1中所有的整数。
(2)浮点数据类型
浮点数据类型用于存储十进制的小数。浮点类型的数值在SQL Server 2014中使用了上舍入(或称只入不舍)的方法进行存储,当且仅当要舍入的是一个非零整数时,对其保留数字部分的最低有效位上的数值加1,
① Real
Real类型的存储空间为4个字节,可精确到第7位小数,其范围从-3.4E + 38 ~ 3.40E + 38.
② Float
Float 数据类型是一种近似数值类型,供浮点数使用。浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E + 308 ~ 1.79E + 308的任意数。
③ Decimal
Decimal 数据类型提供浮点数所需要的实际存储空间,能用来存储从-1038-1~1038-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。范围是小数点左右所能存储的数字的总位数;精度是小数点右边存储的数字的位数。例如:decimal(13,3)表示共有13位,其中整数10位,小数3位。
(3)字符类型
字符类型同样是SQL Server 2014 中常用的数据类型,可用于存储汉字、符号、英文、标点符号等,数字同样可以作为字符类型来存储。SQL Server 2014 的字符型类型包含如下4种:
① Char
Char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,用户必须指定列长。当用户知道要存储的数据的长度时,此数据类型就较为适用。例如,当一个字段要用于存储手机号码时,需要用到11个字符,char类型默认为存储一个字符,最多可存储8000字符。
② Varchar
Varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度。
③ Nchar
Nchar数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍。
④ Nvarchar
Nvarchar数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间上增加了一倍。
(4)日期和时间类型
① Date
Date 类型用于存储常用日期,该类型占3个字节的存储空间,数据的存储格式为“YYYY-MM-DD”;
YYYY:表示日期的年份,取值范围0001~9999。
MM:表示日期中的月份,取值范围为01~12。
DD:表示日期中的某一天,取值范围为01~31。
② Time
Time 类型用于存储一天当中的某一个时间,该类型占5个字节的存储空间,数据的存储格式为“HH:MM:SS[.NNNNNNN]”
HH:表示存储时间的小时位,取值范围为0~23。
MM:表示存储时间的分钟位,取值范围为0~59。
DD:表示存储时间的秒位,取值范围为0~59。
N:表示存储时间秒的小数位,取值范围为0~9999999。
③ Datetime
Datetime数据类型用来表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月31日间所有
的日期和时间数据,精确到三百分之一秒或3.33毫秒,该类型占用8个字节的存储空间。
④ Datetime2
Datetime2是从SQL Server 2008版本以后支持的新日期类型,它是datetime的一个扩展,相比于datetime,
Datetime2所支持的日期从0001年01月01日到9999年12月31日,它的时间精度为100纳秒,占用6~8个字节的存储空间。
⑤ Smalldatetime
Smalldatetime类型与datetime的类型相似,只是它所支持的日期范围更小,从1900年1月1日到2079年6月6日,占用4字节的存储空间。
(5)文本和图形数据类型
① Text
Text数据类型用于存储大容量的文本数据,它的理论容量为231-1(2147483674)个字节,在实际使用中text类型时需要注意硬盘容量。
② Ntext
Ntext数据类型与text类型相似,不同的是ntext类型采用unicode标准字符集(Character set),因此其理论容量为230-1(1073741823)个字节。
③ Image
Image数据类型用于存储大量的二进制数据Binary Data。其理论容量为231-1(2147483647)个字节。其存储数据的模式与text数据类型相同。通常用来存储图形等对象。
注意:未来的Mircosoft SQL Server版本中将不再使用Text、Ntext和image数据类型,为了避免在开发中出现问题请不要使用,可以使用nvarchar(max)、varchar(max)和varbinary(max)替代。
(6)货币数据类型
① Money
Money数据类型用于存储货币值,money数据类型的存储范围是-922337203685477.5808至+922337203685477.5807,占用8个字节的存储空间。
② smallmoney
smallmoney与money数据类型的作用一致,只是取值范围更小,在-214748.3648至214748.3647之间,占用4个字节的存储空间。
(7)位数数据类型
Bit在SQL Server 2014中称为位数据类型,它的取值范围在0或1之间。Bit类型常用逻辑的判断,true为1,false为0。
(8)二进制数据类型
① Binary
Binary(N)是一个固定长度为N字节的二进制数据类型,它的存储范围由N来决定,N的取值范围为1~8000,存储空间为N字节。为了表示二进制数据,在输入时需在数据前面加上“0X”作为二进制标识,例如输入0XBB4代表BB4。
② Varbinary
Varbinary数据类型用来存储可达8000字节的变长的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型。
(9)其他数据类型
① Rowversion
在SQL Server 2014中,每一次对数据表的更改SQL Server都会更新一个内部的序列数,这个序列数就保存在rowversion字段中。所有Rowversion 列的值在数据表中是唯一的,并且每张表中只能有一个包含rowversion字段的列存在。
使用rowversion作为数据类型的列,其字段本身的内容是无自身含义的,这种列的主要是作为数据是否被修改过,更新是否成功的作用列。
② Timestamp
Timestamp时间戳数据类型和rowversion有一定的相似性,每次插入或更改包含timestamp的记录时,timestamp的值就会更新,一张表中只能有一个timestamp列。在创建表时只需要提供数据类型即可,不需要为timestamp所在的数据列提供列名:
createtableTestTable1(PriKey,intPrimarykey,timestamp)
使用rowversion时不具备这种特性,如果要为某一列指定为rowversion数据类型时需声明列名:
createtabletesttable2(PriKey intprimarykey,VeColrowversion)
③ Uniqueidentifier
全局唯一标识符GUID,一般作用主键的数据类型,是由硬件地址、CPU标识、时钟频率所组成的随机数据,在理论上每次生成的GUID都是全球独一无二不存在重复的。通常在并发性较强的环境下可以考虑使用。它的优点在于全球唯一性、可对GUID值随意修改,但是确定也很明显,检索速度慢、编码阅读性差。
④ Cursor
游标数据类型,该类型的数据用来存放数据库中选中所包含的行和列,只是一个物理地址的引用并不包含索引,用于建立数据集。
⑤ Sql_variant
用于存储SQL Server 2014支持的各种数据类型(不包括Text、Ntext、Image、Timestamp和SQL_Variant)的值。
注意:微软后续的SQL版本中将不再使用Timestamp数据类型,请避免使用。