1.char

  char [(n)]存储固定长度的非Unicode字符串数据。n定义字符串长度,并且必须是1到8,000之间的值。存储大小为n个字节。

2.varchar

  varchar [(n | max)]存储可变长度的非Unicode字符串数据。n定义字符串长度,可以是1到8,000之间的值。max表示最大存储大小为2 ^ 31-1个字节(2 GB)。存储大小是输入数据的实际长度+ 2个字节。

3.nchar

  nchar [(n)] 存储固定长度的Unicode字符串数据。n定义字符串长度,并且必须是1到4,000之间的值。存储大小是n个字节的两倍。当排序规则代码页使用双字节字符时,存储大小仍为n个字节。根据字符串,n个字节的存储大小可能小于为n指定的值。4.

4.nvarchar

  nvarchar [(n | max)] 存储可变长度的Unicode字符串数据。n定义字符串长度,可以是1到4,000之间的值。max表示最大存储大小为2 ^ 30-1个字符。最大存储大小(以字节为单位)为2 GB。实际存储大小(以字节为单位)是输入字符数+ 2字节的两倍。

5.datetime

  定义一个日期,该日期与基于24小时制的小数秒的时间相结合。8字节。日期范围:1753年1月1日至9999年12月31日。时间范围:00:00:00至23:59:59.997。

6.smalldatetime

  定义与一天中的时间相结合的日期。时间基于24小时制,秒数始终为零(:00)且没有小数秒。4字节。日期范围:1900年1月1日至2079年6月6日。时间范围:00:00:00至23:59:59。

7.date

  在SQL Server中定义日期。3字节。范围:0001-01-01至9999-12-31。

8.time

  在SQL Server中定义时间。范围:00:00:00.0000000至23:59:59.9999999。

9.datetime2

  datetime2可以视为现有日期时间类型的扩展,它具有更大的日期范围,更大的默认小数精度和可选的用户指定精度。日期范围:0001-01-01至9999-12-31 (date)。时间范围:00:00:00至23:59:59.9999999(time)。

10.bit

  数值数据类型,可以取值1,0或NULL。字节大小1。

11.Tinyint

  数值数据类型,可以取值0-255.字节大小1。

12.Smallint

  数值数据类型,可以取值-32768-32767.字节大小2。

13.int

  数值数据类型,字节大小4。

14.bigint

  数值数据类型,字节大小8。

15.decimal和numeric

  字节大小根据长度而变化。

16.Money

  8字节。

17.SmallMoney

  4字节。

18.Float

  4或8字节。

19.Real

  具有24位精度的浮点值。4字节。

  char的长度是不可变的,而varchar的长度是可变的。也就是说,定义一个char[10]和varchar[10],如果存进去的是abcd,那么char所占的长度依然为10,除了字符abcd外,后面跟六个空格,而varchar就立马把长度变为4了。取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找。但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

  nchar、nvarchar从名字上看多了个n。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。带n 的可以存储 4000个字符,英文字母存在n 类型上也是按两个字节计算。不带n的可以存储8000个字符,英文字符按一个字节,中文字按两个字节。一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。

  所以建议,当列数据条目的大小一致时,请使用 char。当列数据条目的大小变化大时,请使用 varchar。当列数据条目的大小变化大时并且大小可能超过8,000个字节时,使用varchar(max)。尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储。

  在处理货币时,请谨慎选择数据类型。对金钱使用float或real数据类型会造成舍入误差。money或smallmoney数据类型可以精确到1美分的百分之一。对于一些货币值,客户可能请求仅精确到美分,这种情况下,decimal就是更适当的数据类型。

SQL Server数据类型总结的更多相关文章

  1. 为更好地设计数据库,重新整理sql server数据类型

    我们在平常开发过程中,在设计数据的时候,经常碰到数据类型选择的问题,为了更快,更合适地选择正确的数据类型,所以在这里做个总结. 分类 sql server 数据类型 c# 数据类型 描述 应用场景 字 ...

  2. SQL Server 数据类型映射

    SQL Server 和 .NET Framework 基于不同的类型系统. 例如,.NET Framework Decimal 结构的最大小数位数为 28,而 SQL Server 的 decima ...

  3. MySql和SQL Server数据类型 对比

    My Sql 数据类型 SQL Server 数据类型 Yes/No bit Smallint(字节型) tinyint Integer(长整型) int Real(单精度浮点型)    real F ...

  4. SQL Server数据类型与SDE库表sde_type对照表

    SDE_column_registry 表管理所有注册列. 警告:如果使用 SQL 界面更改列定义,SDE_column_registry 表中的记录将不会更新.这可能导致之后的任何数据导出失败. S ...

  5. SQL Server 数据类型映射 (ADO.NET)

    SQL Server 数据类型映射 (ADO.NET) .NET Framework 3.5 更新:November 2007 SQL Server 和 .NET Framework 基于不同的类型系 ...

  6. SQL Server数据类型

    转载:http://www.ezloo.com/2008/10/sql_server_data_type.html    数据类型是数据的一种属性,是数据所表示信息的类型.任何一种语言都有它自己所固有 ...

  7. SQL Server 数据类型 Decimal介绍

    为SQL Server 数据类型,属于浮点数类型.存储数据范围是: -1038~1038-1 的固定精度和小数位的数字.一个decimal类型的数据占用了2~17个字节.decimal数据类型在SQL ...

  8. SQL Server数据类型int、bigint、smallint、tinyint对比表

    SQL Server数据类型int.bigint.smallint.tinyint对比表 数据类型 范围 存储 bigint -2^63 (-9,223,372,036,854,775,808) 到 ...

  9. SQL Server 数据类型映射(转载)

    SQL Server 数据类型映射 SQL Server 和 .NET Framework 基于不同的类型系统. 例如,.NET Framework Decimal 结构的最大小数位数为 28,而 S ...

  10. Sql Server 数据类型与 C# 数据类型对照

    Sql Server 数据类型与 C# 数据类型对照 已验证类型(Sql Server 2012 & Visual Studio 2013) Sql Server C# 简写 bigint S ...

随机推荐

  1. Keras Sequential顺序模型

    keras是基于tensorflow封装的的高级API,Keras的优点是可以快速的开发实验,它能够以TensorFlow, CNTK, 或者 Theano 作为后端运行. 模型构建 最简单的模型是  ...

  2. Autofac log4net Integration Module

    log4net Integration Module While there is no specific assembly for log4net support, you can easily i ...

  3. Web API 源码剖析之默认消息处理程序链--》路由分发器(HttpRoutingDispatcher)

    我们在上一节讲述了默认的DefaultServer(是一个类型为HttpServer的只读属性,详情请参考 Web API 源码剖析之全局配置).本节将讲述DefaultHandler(是一个Http ...

  4. 在Ubuntu 16.04上使用bazel交叉编译tensorflow

    鸽了这么久,正式开工 Author: carbon email: ecras_y@163.com 参考资料: https://github.com/tensorflow/tensorflow http ...

  5. 【Arduino】、Arduino+ESP8266上传至oneNet云

    一.硬件简介 1. Arudino 是一种开源的电子平台,该平台最初主要基于AVR单片机的微控制器和相应的开发软件,包含硬件(各种型号的Arduino板)和软件(Arduino IDE). 2. ES ...

  6. Redis 基础操作

    [Redis 基础操作] 1.ECHO message. Returns message. 2.PHING Returns PONG if no argument is provided, other ...

  7. Associate File Type with Qt In Mac Os and Win

    Win Registry Question One day, my boss want me to finish one function which let the users can double ...

  8. python动态捕获异常-乾颐堂

    在讨论动态捕获异常时让我大吃一惊的是,可以让我找到隐藏的Bug和乐趣... 有问题的代码 下面的代码来自一个产品中看起来是好的抽象代码 - slightly(!) .这是调用一些统计数据的函数,然后进 ...

  9. yum 系列(二) 离线部署

    yum 系列(二) 离线部署 一.下载 rpm 依赖包 (1) yum 下载 rpm 包 准备一台 全新的 CentOS7 mini 虚拟机 ,联网下载所有所需的 rpm 包和其依赖, yum ins ...

  10. Please do not register multiple Pages in undefined.js 小程序报错的几种解决方案

    Wed Jun 27 2018 09:25:43 GMT+0800 (中国标准时间) Page 注册错误,Please do not register multiple Pages in undefi ...