SQL SERVER数据库数据类型区别

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、数据型数据 INTSMALLINTTINYINT

INT(整型数据)表示范围是从-2^31147483647 2^31147483647 的整数,空间占用合适,运算速度快,存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节,如果你的数值没有那么长,为了节省内存空间你可以使用SMALLINT

SMALLINT,表示的范围是-3276832768整数!二者的使用方法完全相同!这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在 数据库里占用2 字节空间。

如果你还想再节省空间你可以选择使用TINYINT,但只能存储0255的整数注意TINYINT不能存储负数。一个TINYINT占用一个字节!

2、字符型数据VARCHARCHARTEXT

charvarchar的长度都在18000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

Char 数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。

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

Text 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-120亿个字符。

3、统一编码字符数据类型NVARCHARNCHARNTEXT:

      这三种数据类型和前面的相比,从名称上看只是多了个字母"N",它表示存储的是Unicode数据类型的字符。字符中,英文字符只需要一个字节存储就足够了,但汉字需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。NVARCHARNCHAR的长度是在1 4000之间。和VARCHARCHAR比较:NVARCHARNCHAR则最多存储4000个字符,不论是英文还是汉字;而VARCHARCHAR最多能存储8000个英文,4000个汉字。可以看出使用NVARCHARNCHAR数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

       NTEXTTEXT之间的差异业余上面类似,对混合存储有很多好处,省去应用程序单独的汉字转换工作。

4datetimesmalldatetime

   datetime:从 1753 1 1 9999 12 31 的日期和时间数据,精确到百分之三秒。

smalldatetime:从 1900 1 1 2079 6 6 的日期和时间数据,精确到分钟。 

5、货币型moneysmallmoney

money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一。

smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 214748.3647 之间的数据,精确到货币单位的万分之一。

6decimalnumeric

    这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 138之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0p之间的值,默认小数位数是0



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值