一.总结常见存储数据类型,看的更清楚一点。

 四种整形  

  1. tinyint      最小整形数 占用一个字节  无符号范围 0到255    有符号范围 -126到125 
  2. smallint   小整形数   占用两个字节  无符号范围 0到2^16=65535  有符号范围 -2^15到2^15-1 
  3.  int       整 形 数   占用四个字节  无符号范围 0到2^32 =4294967295  有符号范围 -2^31到2^31-1
  4. bigint     长整形数   占用八个字节  无符号范围 0到2^64 =18446744073709551615  有符号范围-2^61到2^61-1

    这些整形和C#中对应的分别是 int16  int32  int64 , 个人觉得没必要去记具体数据大小,只要记住数字位数和第一个数据大小就行了。

  小数类型(存储十进制小数)

  实型数据是以指数形式存在于内存中,在内存中存储分为三部分。

  1. 符号位(Sign) : 0代表正,1代表为负
  2. 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
  3. 尾数部分(Mantissa):尾数部分

4个字节 32位

符号位  1bit  

尾数部分 23bit

指数部分8bit

8个字节 64位

符号位 1bit

尾数部分52bit

指数位11bit

     Real指数的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;float的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

     Real:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

     float:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位

     (浮点)数值 = 尾数x底数^指数,(附加正负号)

  1. Real  浮点型数    占用4个字节  有效数字为6~7位,取决于有无符号。
  2. float  浮点数类型  占用8个字节  有效位位15~16位(数据类型针对T_Sql)。
  3. Numeric和Decimal一样。可以用2-17个字节来存储 ,decimal(15,5)表示:共15位,其中整数10位,小数5位

   四种字符数据类型: 

  1. char(n)  n表示字符所占的存储空间,固定长度 每个字符或符号占一个字节的存储空间。若不制定n,那么系统默认为1,最大长度为8000  ANSI字符
  2. nchar(n)   Unicode字符每个字符占两个字节的存储空间,保存固定长度的Unicode字符。NCHAR列中字符的个数最多为4000。
  3. varchar(n)  表示单字节的字符可变长度的字符串(0<n<=8000),每个字符或符号占一个字节的存储空间,VARCHAR数据值能够在它的实际长度中保存。 ANSI字符
  4. nvarchar(n) Unicode字符每个字符占两个字节的存储空间,保存可变长度的Unicode字符。nvarchar列中字符的个数最多为4000。

 日期和时间数据类型: 

  1. DateTime: 可以精确到毫秒,占8个字节
  2. SmallDateTime: 精确到分钟,占4个字节
  3. Date: 只存储日期部分,不包括时间  Date数据类型用3个字节的保存并且范围为01/01/0001至12/31/9999(英文日期是反的)
  4. Time: 只存储时间部分,不包括日期
  5.  DateTime2类似于之前的datetime类型,不过其精度比较高,可以精确到小数点后面7位(100ns)
  6.  DateTimeOffSet: 加入了时区偏移量部分

   货币数据类型(需要在数据前加上货币符号): 

  1. 有4位小数,占8个字节
  2.  SmallMoney: 范围比Money小,占4个字节

 二进制数据类型

 

   Binary: 前面加0X作为二进制标识,例如“0Xabc”  定义形式:Binary(n),n=1-8000   n+4个字节

 

   Var Binary: 具有变动长度的特性