SQL Server学习笔记之易混基本数据类型的区别

  基本数据类型的区别

  东西学了总是会忘,记在这里留着以后自己找方便。----------学东西要注意细节

  昨天突然被提一个问题,平时大意的我肯定是没有在意的,瞬间爆炸。就想着把它记录下来,提醒自己。

  sql server中char和varchar除了char是固定字长,varchar是不定长的区别外,到底还有什么区别呢?我该什么时间用哪个呢?是不是感觉varchar是多么的完美,要多长给多长,那char有什么存在的意义呢?Oh!My God。。。当时一脸懵逼。

  仔细想想,其实并没有自己想象的复杂。。。。

  

  char是给定了长度的,而varchar是没有给定具体的长度,当进行动态操作时,cpu是不是还要耗费时间去确定varchar到底有多长呢?在这里明显就有varchar的效率一般不如char。因为char是无论给多少数据,对它进行的操作总是n的长度。

 

  现在,我就想到了,事情总有个特例吧。char的空间一定比varchar大吗?速度一定比vachar快吗?不是得。经过我反复的查询,果然如此。

 

  1、比如varchar(3)和char(3),就算当存储的数据为NULL时,char占用字节也只有3个,而varchar占用的字节为4个。因为varchar的长度0占用4个字节

  2、数据长度变化不大的用varchar也是浪费空间,它始终要算上varchar长度所占的位置

  3、对于频繁更新的表char的速度比varchar的速度慢。

 

  那么现在问题又来了,你觉得char、varchar、nchar和nvarchar有什么区别呢

  其实就是Unicode和非Unicode的区别

  nchar和nvarchar表示Unicode字符串型,char和varchar只是普通的字符串。而在Unicode中,无论是英文还是中文统一用16位表示,非Unicode中,英文用8位表示,中文用16位标识。显然Unicode字符比非Unicode字符范围广。但是存在一个问题。Unicode的编码速度比非Unicode的编码速度低。所以当全是英文的时候建议用非Unicode,当含有非英文时用Unicode。

  其实ntext和text的区别就在此。要说他们和同一类型的其他数据类型的区别就在于它不用限制长度。个人觉得当要大量字符串时使用。

 

  说到这儿,我们可以看一看整数型和浮点型的区别  

整数型数值型
类型占位数类型占位数
bigint8numeric与精度有关
smallint4  
int2decimal与精度有关
tinyint1float与位数有关
bit real与位数有关

 

   至于datetime和smalldatetime就像java里面的decimal和float数据类型之间的区别,datetime是8字节存储长度,可以精确到毫秒,只能精确到0.333秒,而smalldatetime是4字节长度,只可以精确到分钟,想一想它是small,也只能这样了。money和smallmoney与此类似。

  至此,差不多明白了到底该用哪一个,如果有错,谢谢指出。

  致学习的自己

转载于:https://www.cnblogs.com/OriginalHeart/p/5444072.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值