以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. Android Studio Xposed模块编写(二)

    阅读本文前,假设读者已经看过Android Studio Xposed模块编写(一)  相关环境已经搭建完成.本文演示案例与上文环境一致,不在赘述. 1.概述 Xposed是非常牛叉的一款hook框架 ...

  2. linux内核分析第二周

    网易云课堂linux内核分析第二周 20135103                王海宁 <Linux内核分析>MOOC课程http://mooc.study.163.com/cours ...

  3. “Linux内核分析”实验一报告

    张文俊 + 原创作品转载请注明出处 + <Linux 内核分析> MOOC 课程 实验要求: 1.总结部分要求阐明自己对“计算机是如何工作的”理解: 2.博客中需要使用实验截图: 实验内容 ...

  4. 浅谈个人对RAID技术的理解

    RAID,字面意思为一种廉价的冗余磁盘阵列,它是通过将大量的磁盘分组,实现了数据冗余,目的是为了保护数据.RAID现已经应用于计算机各个领域.它的优点是降低了工作成本并提高了效率,并且使系统有稳定的运 ...

  5. word count程序,以及困扰人的宽字符与字符

    一个Word Count程序,由c++完成,有行数.词数.能完成路径下文件的遍历. 遍历文件部分的代码如下: void FindeFile(wchar_t *pFilePath) { CFileFin ...

  6. Alpha冲刺第7天

    Alpha第7天 1.团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504 陈顺兴 031602505 张胜男 031602540 廖钰萍 031602323 雷光游 03160 ...

  7. Alpha冲刺测试

    项目Alpha冲刺(团队) Alpha冲刺测试 姓名 学号 博客链接 何守成 031602408 http://www.cnblogs.com/heshoucheng/ 黄锦峰 031602411 h ...

  8. Dummy Sample

    转载至:http://www.bubuko.com/infodetail-2495860.html :https://www.cnblogs.com/richered/p/8417378.html

  9. Installing OpenSSH from the Settings UI on Windows Server 2019 or Windows 10 1809

    Installing OpenSSH from the Settings UI on Windows Server 2019 or Windows 10 1809 OpenSSH client and ...

  10. python 按照固定长度分割字符串

    >>> import re >>> string = '123456789abcdefg' >>> re.findall(r'.{3}', str ...