SQLServer 提供了 25 种数据类型:
·Binary [(n)]
·Varbinary [(n)]
·Char [(n)]
·Varchar[(n)]
·Nchar[(n)]
·Nvarchar[(n)]
·Datetime
·Smalldatetime
·Decimal[(p[,s])]
·Numeric[(p[,s])]
·Float[(n)]
·Real
·Int
·Smallint
·Tinyint
·Money
·Smallmoney
·Bit
·Cursor
·Sysname
·Timestamp
·Uniqueidentifier
·Text
·Image
·Ntext
对于每个类型的详细介绍可以去参考SQLServer数据库系统的帮助文档,这里强调一下作为计算机学习者一定要学会看帮助文档。以下是我找到的一些相似且常用的类型之间的区 别和应用场合。
1、数据型数据 INT,SMALLINT,TINYINT
INT(整型数据)表示范围是从-2^31,147,483,647 到 2^31,147,483,647 的整数,空间占用合适,运算速度快,存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节,如果你的数值没有那么长,为了节省内存空间你可以使用SMALLINT。
SMALLINT,表示的范围是-32768到32768整数!二者的使用方法完全相同!这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在 数据库里占用2 字节空间。
如果你还想再节省空间你可以选择使用TINYINT,但只能存储0到255的整数注意TINYINT不能存储负数。一个TINYINT占用一个字节!
2、字符型数据VARCHAR、CHAR、TEXT:
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
Char 数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。
Varchar 数据类型,同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。 它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度 。
Text 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符。
3、统一编码字符数据类型NVARCHAR,NCHAR、NTEXT:
这三种数据类型和前面的相比,从名称上看只是多了个字母"N",它表示存储的是Unicode数据类型的字符。字符中,英文字符只需要一个字节存储就足够了,但汉字需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。NVARCHAR,NCHAR的长度是在1到 4000之间。和VARCHAR、CHAR比较:NVARCHAR,NCHAR则最多存储4000个字符,不论是英文还是汉字;而VARCHAR、CHAR最多能存储8000个英文,4000个汉字。可以看出使用NVARCHAR,NCHAR数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
NTEXT与TEXT之间的差异业余上面类似,对混合存储有很多好处,省去应用程序单独的汉字转换工作。
4、datetime和smalldatetime:
datetime:从 1753 年 1 月 1 日 到 9999 年 12 月 31 日 的日期和时间数据,精确到百分之三秒。
smalldatetime:从 1900 年 1 月 1 日 到 2079 年 6 月 6 日 的日期和时间数据,精确到分钟。
5、货币型money、smallmoney:
money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一。
smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一。
6、decimal和numeric:
这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是0。