以SQL Server为例,SQL Server的数据类型总共有33种,归纳为一下类别:

精确数字 Unicode字符串
近似数字 二进制字符串
日期和时间 其他数据类型
字符串  
1、数字数据类型
1.1 整数数据类型
数据类别 范围 存储
bigint -2的63次方到2的63次方-1 8字节
int -2的31次方到2的31次方-1 4字节
smallint -2的15次方到2的15次方-1 2字节
tinyint 0~255 1字节
int数据类型是主要的整数数据类型,而超过int的存储范围,将用bigint进行存储。
只有当参数表达式为bigint类型时,函数返回是bigint,SQL Server不会自动将其他整数数据类型提升为bigint。
 
1.2小数数据类型
decimal 和 numeric 是带固定精度和小数位数的数值数据类型。其语法是decimal【(p【,s】)】和numeric【(p【,s】)】(p:精度,该精度是1~38范围内的数值,默认为18,s:小数位数,必须是0~p之间的值,默认小数位数为0,存储大小基于精度而变化)。固定精度和小数位数。使用最大精度时,有效值从-10的38次方+1到10的38次方-1.
numeric在功能上等价于decimal。
 
1.3货币类型
货币类型有专门的money和smallmoney两种,这两种数据类型精确到他们所代表的货币单位的万分之一。
数据类型 范围 存储大小
money -2的63次方到2的63次方-1 8字节
smallmoney -2的31次方到2的31次方-1 4字节
 
1.4近似数字
float和real这两种数据类型用于表示浮点数值数据的大致数据类型,浮点数据为近似值。也因此,并非所有数据范围内的所有值都可以精确地表示,所以称为近似数字。
数据类型 范围 存储大小
float -1.79E+308~-2.23E-308以及2.23E-308~1.79E+308 取决于n的值,例如float(50)
real -3.40E+38~1.18E-38、0以及1.18E-38~3.40E+38 4字节
 
float类型语法是:float【(n)】。n为用于存储float数值尾数的位数(以科学计数法表示)。因此可以确定精度和存储大小。n应是在1~53之间的某个数,n的默认值为53.
当n的取值范围是1~24时,精度为7位数,存储大小为4字节。当n的取值范围为25~53时,精度是15位数,存储大小为8字节。
real的ISO同义词为float(24).
 
1.5bit类型
        bit类型的取值范围为1、0或NULL的整数数据类型。bit列的存储依据存储大小不同而不同。
        字符串值TRUE和FALSE可以转换为以下bit值,TRUE转换为1,FALSE转换为0.
 
2、字符数据类型
 
字符数据类型共计6种,又分为字符串和Unicode字符串两类:
    字符串包括char、varchar、text;
    Unicode字符串包含nchar、nvarchar、ntext。
 
N“string”表示string是个Unicode字符串。Unicode常量被解释为Unicode数据,并且不适用代码页进行计算。Unicode常量确实有排序规则,主要用来控制比较和区分大小。
Unicode数据中的每个字符都使用两个字节来存储,而普通字符数据则使用一个字节来存储。
 
char为定长字符串,而varchar是变长字符串。但是不管是定长还是变长字符串,都应该有一个容量。
char【(n)】固定长度,长度为n个字节,n的取值范围是1~8000.而相比于varchar【(n|max)】可变长度,n的取值范围是1~8000.max指示最大存储大小是231-1字节。存储大小是输入数据的实际长度加2个字节,所以输入数据的长度可以是0个字符。
 
注意:
1.如果站点支持多语言,请考虑使用Unicode nchar或者nvarchar数据类型,以最大消除字符转换问题。如果使用char或varchar,建议a、如果列数据项的大小一致,则使用char;b、如果列数据项的大小差异相当大,则使用varchar,c、如果列数据项大小相差很大,而且大小可能超过8000字节,则使用varchar(max)。
2.当排序规则代码页使用双字节字符时,存储大小任然为n个字节,那么存储的字符就要除以2,例如varchar(10)只能放5个字符。
3.如果存储的是汉字,最好使用Unicode字符串类型。
4.如果数据量比较大,不建议使用text或者nchar类型,而是使用varchar(max)或者是nvarchar(max).
5.如果列数据项的大小总有差异,就使用varchar,因为定长就是在如果不足规定的位数时就使用空格填充。
 
3、日期和时间数据类型
数据类型 格式 范围 精确度 存储大小
time hh:mm:ss[.nnnnnnn] 00:00:00.0000000~23:59:59.9999999 100纳秒 3~5字节
date YYYY-MM-DD 0001-01-01~9999-12-31 1天 3字节
smalldatetime YYYY-MM-DD hh:mm:ss 1900-01-01~2079-06-06 1分钟 4字节
datetime YYYY-MM-DD hh:mm:ss[.nnn] 1754-01-01~9999-12-31 0.00333秒 8字节
datetime2 YYYY-MM-DD hh:mm:ss[.nnnnnnn] 0001-01-01 00:00:00.000000~9999-12-31
23:59:59.9999999
100纳秒 6~8字节
datetimeoffset YYYY-MM-DD hh:mm:ss[.nnnnnnn]
[+|-]hh:mm
0001-01-01 00:00:00.000000~9999-12-31
23:59:59.9999999
100纳秒 8~19字节
 
4、二进制数据类型
 
二进制数据类型提供了将文件存入数据库的可能。在日常编程中,可以将文件转换为二进制然后再存入数据库中,如图片、文件等等。但是这不是推荐用法。最好使用varbinary(max)来代替image数据类型。
 binary【(n)】:固定长度的二进制数据类型,n的取值范围是1~8000,存储大小为n个字节。;
varbinary【(n|max)】:长度为n字节的可变长度二进制数据,n的取值范围是1~8000。max的最大存储大小为231-1字节。存储大小为:所输入数据的实际长度+2个字节。所以输入数据的长度可以是0字节。
如果没有在数据定义或者变量声明语句中指定n,则默认长度为1.如果没有使用CAST函数指定n,则默认长度是30.
 
 
5、其他数据类型
 
cursor:这是变量或存储过程OUTPUT参数的一种数据类型,这些参数包含对游标的引用。使用cursor数据类型创建的变量可以为空。对于CREATE TABLE语句中的列,不能使用cursor数据类型。
 
timestamp:用于表示SQL Server活动的先后顺序,以二进制格式表示。数据与插入数据或者日期和时间没有关系。
                     timestamp就是行版本。不过不建议在SQL Server中使用timestamp语法。
 
uniqueidentifier:由16字节的十六进制数字组成,表示全局唯一的。当表的记录行要求唯一时,它是非常有用的。很多时候用此类型来作为数据主键,因为它基本上是不会重复的。
 
hierarchyid:是一种长度可变的系统数据类型。可使用hierarchyid表示层次结构中的位置。
 
sql_variant:用于支持SQL Server支持的各种数据类型(不包括text、ntext、image、timestamp和sql_variant等)。可以在列、参数、变量和用户定义函数的返回值中。使得这些数据库对象能够支持其他数据类型的值。
 
 
 

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

  1. SQL Server常见数据类型介绍

    数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 1.整数类型 int 存储范围是-2,147,483,648到2,147,483 ...

  2. Sql Server之数据类型详解

      数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为 ...

  3. SQL Server 常见数据类型介绍

    数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 整数类型 int 存储范围是-2,147,483,648到2,147,483,6 ...

  4. SQL SERVER的数据类型

    1.SQL SERVER的数据类型 数据类弄是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或 ...

  5. sql server 字符数据类型

    SQL Server 中字符类型包括varchar.char.text等.主要用于存储字符数据.varchar和char类型的主要区别在于数据填充.例如,一个列名为FirstName且数据类型为var ...

  6. 通过SQL Server自定义数据类型实现导入数据

    写在前面 在看同事写的代码时看到了SQL Server中可以自定义数据类型,而且定义的是DataTable类型的数据类型. 后我想起了以前我们导入数据时要么是循环insert写入,要么是SqlBulk ...

  7. Sql Server 自定义数据类型

    SQLServer 提供了 25 种基本数据类型: ·Binary [(n)]  二进制数据 既可以是固定长度的(Binary),也可以是变长度的.其中,n 的取值范围是从 1 到 8000.其存储窨 ...

  8. C# 与 SQL Server 的数据类型对应关系

    (一)C#与SQL Server 2005(或以下版本): C# C#取值 SQL Server SQL Server取值 System.DateTime samlltime System.Objec ...

  9. SQL Server datetime数据类型设计、优化误区

    一.场景 在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你看到表的记录如下图所示,你最先想到的是什么呢? (图1:数据列 ...

随机推荐

  1. CS100.1x-lab3_text_analysis_and_entity_resolution_student

    这次作业叫Text Analysis and Entity Resolution,比前几次作业难度要大很多.相关ipynb文件见我github. 实体解析在数据清洗和数据整合中是一个很重要,且有难度的 ...

  2. 微信小程序之可滚动视图容器组件 scroll-view

    1. 纵向滚动 scroll-y 当 设置为scroll-y 时, 需要将其高度设为固定值 如果整个页面,即最外层标签为scroll-view,需要并将其高度设为100%,也需要将page设为100% ...

  3. [APIO2015]巴厘岛的雕塑[按位贪心+dp]

    题意 给你长度为 \(n\) 的序列,要求分成 \(k\) 段连续非空的区间,求所有区间和的 \(or\) 最小值. 分析 定义 \(f_{i,j}\) 表示前 \(i\) 个点分成 \(j\) 段的 ...

  4. windows超级实用快键键

    1 电脑锁屏Win + L 有些时候,需要暂时离开座位去处理其他事,可是电脑还有数据再跑. 关掉的话,数据就白跑了,不关的话,又不想让别人看到我电脑的资料. 那么就按住windows键后,再按L键. ...

  5. 最简单的XML用法

    在传递数据时,XML和JSON是最常用的数据格式,SQL Server从很早的版本就开始支持XML格式,而对于JSON格式,SQL Server从2016版本开始支持.大多数数据库系统并没有升级到SQ ...

  6. 【Direct2D1.1初探】Direct2D特效概览

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Direct2D是一个基于Direct3D的2D图形API,可以利用硬件加速特性来提供高性能高质量的2D渲染.但 ...

  7. Kali信息收集-搜索引擎

    1.google hacking intext:搜索正文内容 intitile:网页标题中的内容 inurl:url中的关键字 site:目标站点下 filetype:文件类型 cache:缓存 li ...

  8. vue入门全局配置

    全局配置 Vue.config 是一个对象,包含 Vue 的全局配置.可以在启动应用之前修改下列属性: silent 类型:boolean 默认值:false 用法: Vue.config.silen ...

  9. Notes of Daily Scrum Meeting(12.19)

    今天工作进展的速度别昨天稍有提高,希望大家再接再厉!加油! 团队任务总结如下: 团队成员 今日团队工作 陈少杰 重新尝试使用get等方法进行网络连接的调试 王迪 调试搜索功能中测出的问题 金鑫 测试已 ...

  10. 《Linux内核分析》课程第一周学习总结

    姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...