SQL Server中包含了4种不同的数据类型,一 数字型,二 日期与时间, 三 字符串, 四 其他

上述4个大类中,每一类包含一定数量的子类。 表中的每一列,被声明的变量,参数等,都必须有与之相对应的数据类型。

数据库的完整性很大程度上取次于数据类型是否进行了正确设置。因此不应该总是依赖于应用程序来强制使用某种数据类型。

一 数字型

数字型(Numeric)数据类型有两个子类:精通数字于近似数字。精通数字类型对应有限范围内的数值。

精确数字类型

数据类型                                                      范围 存储
bigint -2^63(-9 233 372 036 854 775 808)到2^63-1(9 233 372 036 854 775 808) 8字节
int -2^31(-2 147 483 648)到2^31-1(2 147 483 648) 4字节
smallint -2^15(-32 768)到2^15-1(-32 768) 2字节
tinyint 0到256 1字节
money -922 337 203 685 477.580 8到 922 337 203 685 477.580 7 8字节
smallmoney -214 748.364 8 到 214 748.364 7 4字节

如果表里的弄列的值仅介于1到10之间,则应该使用tinyint类型

除了表中列出的几个子类外,精确数字类型还包括另外两种数据类型:decimal和numeric,

两者在小数位数于精确上有细微的区别

如果想存储一个精度为4的数字,小数点的左右两边各有2位,则需要使用的数据类型为decimal(4,2);

近似数字子类类似于decimal和numeric型,还有一种精度值,即浮点型(float);

decimal和float数据类型间主要的区别在于:前者存储的精度级别更高。

二 字符串型

字符串型包含三个子类:字符串,Unicode字符串以及二进制字符串。三者各自均包含固定长度,可变长度以及在新版本中被删除的字符串这三种类型

注意: n用于定义字符串长度。对可变的长度字符串而言,n表示该字符串最大可存储的固定长度,

极限存储大小为2^31-1个字节(2GB))。

字符串型子类用于存储非Unicode型数据。该子类包含的三种数据类型如下:

*  char(n):固定长度,长度为1~8000。

*  varchar(n):可变长度,最大可存储2^31-1个字节(2GB)。

*  text:该类型已被删除,取而代之的是varchar(max)型。

Unicode字符串子类,可以存储Unicode型,也可以存储非Unicode型数据。该子类中的三种数据类型如下:

*  nchar(n):固定长度的Unicode字符串数据。长度为1~4000.

*  nvarchar(n):可变长度的Unicode字符串数据。最大长度存储大小是2^31-1个字节(2GB).

*  ntext:该类型已被删除,取而代之的是varchar(max)型。

二进制字符串子类存储的是二进制数据。该子类中的三种数据类型如下:

*  binary(n):长度为n字节的固定长度二进制数据,其中n为1~8000。

*  varbinary(n):可变长度的二进制数据。最大长度存储大小是2^31-1个字节(2GB).

*  image:该类型已被删除,取而代之的是carbinary(max)型。

建议作为一种最佳实践,  建议: 当需要存储固定长度的值时选用 char,nchar,binary等类型;如果值的长度不变,则使用varchar, nvarchar,varbinary等类型。

三 日期于时间类型

日期于时间数据类型被广泛应用于SQL Server数据库中。该类型提供了多种方式可方便地存储日期与时间值。

目前SQL Server中共有6种日期与时间型数据库类型。

*  time(n):定义一天中的某个时间。这个不能感知时区,基于24小时制。 n表示秒的小数部分n的取值从0到7。

*  date:用于存储日期值,取值范围为01-01-01 到 12-31-9999

*   smalldatetime:用于存储日期与时间值。其中日期部分的取值介于 1/1/1900到6/6/2079之间,

而时间部分则精确到秒。 如 4/1/2017 13:15:04之类

*  datetime:该类型类似于smalldatetime但日期的取值范围更广,时间的精度更高。可存储的日期范围与date相同

可以使用这个数据类型来存储如 4/1/2017 13:20:888之类的值

*  datetime2(n):该类型与datetime型相似。还多了n的作用,更精确范围更大

*  datetimeffset:该类型包含了 datetime2全部功能,不仅如此还支持时区信息。该特点使得这种类型区别于date

与time数据类型。我们可以再此类中存储带时区偏移量的日期与时间数值, 如 4/1/2017 13:37:24-06:00。

四 其他数据类型

除了上述几种外,SQL Server中还提供了其他数据类型

其他SQL Server2012数据类型
数据类型 简介
cuesor 用于递归与迭代过程的数据库临时备份。这是唯一一种不能被用于表中的数据类型。
rowversion(timestamp) 该类型自动生成一个8字节的值,rowversion取代了timestamp数据类型。该类型的典型用途为检测数据的更改
hierarchyid 是一种表示位置的数据类型。可使用hierarchyid表示数据在层次结构中的位置。
sql_variant

该类型可以称得上是数据类型中的变色龙。它可以存储SQL Server支持的各种数据类型的值。在执行针对该类型的任何操作之前,必须先将它转化为对应的数据类型的值。例如:如果希望完成加法操作,则必须先把它转换为int之类的数据类型,才能完成接下来的加法操作。

xml 存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。
空间数据 SQL Server 支持两种空间数据类型:GEOGRAPHY 和GEOMETRY。GEOGRAPHY类型表示圆形地球坐标系中的数据。而GEOMETRY则表示欧几里得(平面)坐标系中得数据,入点,线以及其他得地理特征
filestream 借助FILESTREAM,基于SQL Server的应用程序可以将非结构化的数据(入文档和图像)存储在文件系统中。FILESTREAM将varbinary(max)二进制大型对象(BLOB)数据作为文件存储在NTFSW文件系统中

熟悉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 ...

随机推荐

  1. 事务 — Redis 设计与实现

    非事务状态下的命令以单个命令为单位执行,前一个命令和后一个命令的客户端不一定是同一个: 事务状态则是以一个事务为单位,执行事务队列中的所有命令:除非当前事务执行完毕,否则服务器不会中断事务,也不会执行 ...

  2. NET设计模式 第二部分 结构性模式(14):结构型模式专题总结

    ——探索设计模式系列之十五 Terrylee,2006年5月 摘要:结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能( ...

  3. HanLP分词命名实体提取详解

    HanLP分词命名实体提取详解   分享一篇大神的关于hanlp分词命名实体提取的经验文章,文章中分享的内容略有一段时间(使用的hanlp版本比较老),最新一版的hanlp已经出来了,也可以去看看新版 ...

  4. subversion与TortoiseSVN的使用

    Subversion是一个自由开源的版本控制系统.在Subversion管理下,文件和目录可以超越时空.Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可 ...

  5. RedHat7.3创建本地yum源

    [root@master ~]# mkdir -p /var/www/html 使用安装系统的ISO镜像文件rhel-server-7.3-x86_64-dvd.iso 把rhel-server-7. ...

  6. hadoop append 追加文件错误

    java.io.IOException:Failed to replace a bad datanode on the existing pipeline due to no more good da ...

  7. RC4被JDK8默认禁用导致腾讯QQ邮箱无法访问

    7月29日开始,腾讯修改了邮箱的加密方式,导致我们线上的所有的腾讯代收.代发邮件的功能全部失效.解决方法在最后,如果需要可直接跳转至解决方法一节 问题出现 7月29日开始,线上的所有的腾讯代收.代发邮 ...

  8. PerformEraseBackground 擦除背景(ThemeServices)

    PerformEraseBackground 擦除背景的简单方法(外带ThemeServices例子) 在查这个函数的时候,顺便看到了有趣的代码. 怎么使用 Themes . unit Unit2; ...

  9. UML类图快速入门篇

    1.关联 1.1双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类 ...

  10. JavaWeb工程 目录结构***

    以下是mavaen推荐的项目目录. ├── pom.xml └── src     ├── main     │   ├── java     │   │   └── group     │   │  ...