SQL server 常用数据类型讲解

 

字段数据类型

缩写

           含义

sql_variant

sv

存储不同数据类型的值

数值型

integer

int

整数值,用4个字节来存储

bigint

bint

整数值,用8个字节来存储。数据值存储范围  -263~263

smallint

sint

整数值,用2个字节来存储。存储范围(-32768—32767)

Tinyint

tint

非负整数值,用1个字节来存储。存储范围0~255

decimal(p,[s])

dec

定点数。p 表示总数字位数(不包括小数点),s表示小数位数(超过s自动截取)

numeric(p ,[s ])

num

同decimal

Real

r

浮点数(2.23E-308~1.79E+308,-2.23E-308~-1.79E+308)

float[(p)]

f

浮点数,P表示精度。P<25(4个字节),p>=25(8个字节)

Money

mn

币值,对应于8字节的decimal 值,四舍五入到小数点后4位

smallmoney

smn

类似于money,但以4字节存储。

串  型

char[(n)]

ch

定长字符串,n是字符串长度,默认值为1,n<=8000

Varchar[(n)]

vch

变长(0<n<=8000)字符串,以其实际长度来存储。

nchar[(n)]

nch

定长的unicode字符串,每个字符以2字节存储,0<n<=4000

nvarchar[(n)]

nvch

变长的unicode字符串,每个字符以2字节存储,0<n<=4000

sysname

sysname

等同于nvarchar(128),用于引用数据库对象名

text[(n)]

txt

特大型字符串,用于长度>8000的字符串,每个字符用1字节存储

ntext[(n)]

ntxt

特大型unicode字符串。

日期和时间数据类型

datatime

dt

以4字节整数值形式存储的日期和时间值(1753.1.1-9999.12.31)

smalldatatime

sdt

以2字节整数值形式存储的日期和时间值(1900.1.1-2079.6.6)

二进制串数据类型

binary[(n)]

bin

n个字节组成的定长的位串。 0〈=n〈=8000

varbinary[(n)]

vbin

最大可为N个字节的变长的位串。0〈=n〈=8000

Image

img

几乎没有上限值的定长位串。

Bit

bit

有三个可能值(0,1,NULL)的布尔型数据类型(1B),不能用作索引

派生数据类型

timestamp

ts

指定被定义为varbinary(8)(或binary(8),取决于列的空值性)的一列。系统为每个数据库保留一个当前值,每当任何一行中插入和更新了时间信息列,这个值就加1。这样时间信息列能够被用来确定行最后一次被更改的相对时间。

       

 

  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中所有的整数。

 

  1. 浮点数据类型

浮点数据类型用于存储十进制的小数。浮点类型的数值在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位。

 

  1. 字符类型

字符类型同样是SQL Server 2014 中常用的数据类型,可用于存储汉字、符号、英文、标点符号等,数字同样可以作为字符类型来存储。SQL Server 2014 的字符型类型包含如下4种:

 

  • Char

Char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,用户必须指定列长。当用户知道要存储的数据的长度时,此数据类型就较为适用。例如,当一个字段要用于存储手机号码时,需要用到11个字符,char类型默认为存储一个字符,最多可存储8000字符。

 

  • Varchar

Varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度。

 

  • Nchar

Nchar数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍。

 

  • Nvarchar

Nvarchar数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间上增加了一倍。

 

  1. 日期和时间类型
    • 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字节的存储空间。

 

  1. 文本和图形数据类型
    • 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)替代。

  1. 货币数据类型
    • Money

Money数据类型用于存储货币值,money数据类型的存储范围是-922337203685477.5808至+922337203685477.5807,占用8个字节的存储空间。

    • smallmoney

smallmoney与money数据类型的作用一致,只是取值范围更小,在-214748.3648至214748.3647之间,占用4个字节的存储空间。

  1. 位数数据类型

Bit在SQL Server 2014中称为位数据类型,它的取值范围在0或1之间。Bit类型常用逻辑的判断,true为1,false为0。

  1. 二进制数据类型
    • Binary

Binary(N)是一个固定长度为N字节的二进制数据类型,它的存储范围由N来决定,N的取值范围为1~8000,存储空间为N字节。为了表示二进制数据,在输入时需在数据前面加上“0X”作为二进制标识,例如输入0XBB4代表BB4。

 

    • Varbinary

Varbinary数据类型用来存储可达8000字节的变长的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型。

 

  1. 其他数据类型
    • Rowversion

在SQL Server 2014中,每一次对数据表的更改SQL Server都会更新一个内部的序列数,这个序列数就保存在rowversion字段中。所有Rowversion 列的值在数据表中是唯一的,并且每张表中只能有一个包含rowversion字段的列存在。

使用rowversion作为数据类型的列,其字段本身的内容是无自身含义的,这种列的主要是作为数据是否被修改过,更新是否成功的作用列。

 

    • Timestamp

Timestamp时间戳数据类型和rowversion有一定的相似性,每次插入或更改包含timestamp的记录时,timestamp的值就会更新,一张表中只能有一个timestamp列。在创建表时只需要提供数据类型即可,不需要为timestamp所在的数据列提供列名:

create table TestTable1(PriKey,int Primary key,timestamp)

       使用rowversion时不具备这种特性,如果要为某一列指定为rowversion数据类型时需声明列名:

create table testtable2(PriKey int primary key,VeCol rowversion)

 

    • Uniqueidentifier

全局唯一标识符GUID,一般作用主键的数据类型,是由硬件地址、CPU标识、时钟频率所组成的随机数据,在理论上每次生成的GUID都是全球独一无二不存在重复的。通常在并发性较强的环境下可以考虑使用。它的优点在于全球唯一性、可对GUID值随意修改,但是确定也很明显,检索速度慢、编码阅读性差。

 

    • Cursor

游标数据类型,该类型的数据用来存放数据库中选中所包含的行和列,只是一个物理地址的引用并不包含索引,用于建立数据集。

 

    • Sql_variant

用于存储SQL Server 2014支持的各种数据类型(不包括Text、Ntext、Image、Timestamp和SQL_Variant)的值。

       注意:微软后续的SQL版本中将不再使用Timestamp数据类型,请避免使用。

 

猜你喜欢

转载自blog.csdn.net/CQL_K21/article/details/89044978