zoukankan      html  css  js  c++  java
  • SQL Server 数据类型详解

    SQL Server 数据类型详解

     

    A.    整数

     

    整数型数据包括bigint型、int型、smallint型和tinyint型。

     

    ·bigint型数据的存储大小为8个字节,共64位。其中63位用于表示数值的大小,1位用于表示符号。bigint型数据可以存储的数值范围是-263263-1,即-9 223 372 036 854 775 808 9 223 372 036 854 775 807

     

    ·int型数据的存储大小为4个字节,共32位。其中31位用于表示数值的大小,1位用于表示符号。int型数据存储的数值范围是-231231-1,即-2 147 483 648 2 147 483 647

     

    ·smallint型数据的存储大小为2个字节,共16位。其中15位用于表示数值的大小,1位用于表示符号。smallint型数据存储的数值范围是-215215-1,即-32 768 32 767

     

    ·tinyint型数据的存储大小只有1个字节,共8位,全部用于表示数值的大小,由于没有符号位,所以tinyint型的数据只能表示正整数。tinyint型数据存储的数值范围是-2727-1,即-256255

     

    B.    浮点

     

    浮点数据类型用于存储十进制小数。在SQL Server 2000中浮点数值的数据采用上舍入(Round up)的方式进行存储,也就是说,要舍入的小数部分不论其大小,只要是一个非零的数,就要在该数字的最低有效位上加1,并进行必要的进位。由于浮点数据为近似值,所以并非数据类型范围内的所有数据都能精确地表示。

     

    浮点数据类型包括real型、float型、decimal型和numeric型。

     

    ·real型数据的存储大小为4个字节,可精确到小数点后第7位数字。这种数据类型的数据存储范围为从-3.40E+38 -1.18E-3801.18E-38 3.40E+38

     

    ·float型的数据存储大小为8个字节,可精确到小数点后第15位数字。这种数据类型的数据存储范围为从-1.79E+308 -2.23E-30802.23E+308 1.79E+308

     

    float型的数据可写成float[(n)]的形式。其中n115之间的整数值,指定float型数据的精度。当n17时,实际上用户定义了一个real型的数据,系统用4个字节存储;当n815时,系统认为它是个float型的数据,用8个字节存储它。这样既增强了数据定义的灵活性,又节省了空间。

     

    ·decimal数据类型和numeric数据类型的功能完全一样,它们都可以提供小数所需要的实际存储空间,但也有一定的限制,用户可以用217个字节来存储数据,取值范围是-1038+1 1038-1

     

    decimal型数据和numeric型数据的定义格式为decimal[(p,[s])]numeric[(p,[s])],其中p表示可供存储的值的总位数(不包括小数点),默认值为18s表示小数点后的位数,默认值为0;参数之间的关系是0sp。例如:decimal(15,5)表示共有15位数,其中整数10位,小数5位。

     

    C.    二进制

     

    二进制数据类型用于存储二进制数据,包括binary型、varbinary型和image型。

     

    ·binary型是固定长度的二进制数据类型,其定义形式为binary(n),其中n表示数据的长度,取值为18 000。在使用时应指定binary型数据的大小,默认值为1个字节。binary类型的数据占用n+4个字节的存储空间。

     

    在输入数据时必须在数据前加上字符“0X”作为二进制标识。例如:要输入“abc”则应输入“0Xabc”。若输入的数据位数为奇数,则系统会自动在起始符号“0X”的后面添加一个0。如上述输入“0Xabc”后,系统会自动变为“0X0abc”。

     

    ·varbinary型是可变长度的二进制数据类型,其定义形式为varbinary(n),其中n表示数据的长度,取值为18 000。如果输入的数据长度超出n的范围,则系统会自动截掉超出部分。

     

    varbinary型具有变动长度的特性,因为varbinary型数据的存储长度为实际数值长度+4个字节。当binnary型数据允许null值时,将被视为varbinary型的数据。

     

    一般情况下,由于binary型的数据长度固定,因此它比varbinary型的数据处理速度快。

     

    ·image型的数据也是可变长度的二进制数据,其最大长度为231-1(2 147 483 647)个字节。

     

    D.    逻辑

     

    逻辑数据类型只有一种bit型。bit数据类型只占用1个字节的存储空间,其值为01。只要输入的值为非0,系统都会当作1处理。另外,bit型不能定义为null值。

     

    E.    字符

     

    字符数据类型是使用最多的数据类型,它可以用来存储各种字母、数字符号、特殊符号等。一般情况下,使用字符类型数据时,须在数据的前后加上单引号或双引号。字符数据类型包括char型、nchar型、varchar型和nvarchar型。

     

    ·char型是固定长度的非Unicode字符数据类型,在存储时每个字符和符号占用一个字节的存储空间。其定义形式为char[(n)],其中n表示所有字符所占的存储空间,取值为18 000,即可容纳8 000ANSI字符,默认值为1。若输入的数据字符数小于n定义的范围,则系统自动在其后添加空格来填满设定好的空间;若输入的数据字符数超过n定义的范围,则系统自动截掉超出部分。

     

    ·nchar型是固定长度的Unicode字符数据类型,由于Unicode标准规定在存储时每个字符和符号占用2个字节的存储空间,因此nchar型的数据比char型数据多占用一倍的存储空间。其定义形式为nchar[(n)],其中n表示所有字符所占的存储空间,取值为14 000,即可容纳4 000Unicode字符,默认值为1

     

    使用Unicode标准字符集的好处是由于它使用两个字节作存储单位,使得一个存储单位的容量大大增加,这样就可以将全世界的语言文字都囊括在内。当用户在一个数据列中同时输入不同语言的文字符号时,系统不会出现编码冲突。

     

    ·varchar型是可变长度的非Unicode字符数据类型。其定义形式为varchar[(n)]。它与char型类似,n的取值范围是18 000。由于varchar型具有可变长度的特性,所以varchar型数据的存储长度为实际数值的长度。如果输入数据的字符数小于n定义的长度,系统也不会像char型那样在数据后面用空格填充;但是如果输入的数据长度大于n定义的长度,系统会自动截掉超出部分。

     

    一般情况下,由于char型的数据长度固定,因此它比varchar型数据的处理速度快。

     

    ·nvarchar型是可变长度的Unicode字符数据类型,其定义形式为nvarchar[(n)]。由于它采用了Unicode标准字符集,因此n的取值范围是从14 000nvarchar型的其他特性与varchar类型相似。

     

    F.    文本和图形

     

    文本和图形数据类型是用于存储大量的非UnicodeUnicode字符以及二进制数据的固定长度和可变长度数据类型,包括text型、ntext型和image型。

     

    ·text型是用于存储大量非Unicode文本数据的可变长度数据类型,其容量理论上为231-1(2 147 483 647)个字节。在实际应用时需要视硬盘的存储空间而定。

     

    SQL Server 2000以前的版本中,数据库中一个text对象存储的实际上是一个指针,它指向一个以8KB为单位的数据页。这些数据页是动态增加并被逻辑连接起来的。在SQL Server 2000中,则将textimage型的数据直接存放到表的数据行中,而不是存放到不同的数据页中。这样就减少了用于存储textimage类型的空间,并相应减少了磁盘处理这类数据的I/O数量。

     

    ·ntext型是用于存储大量Unicode文本数据的可变长度数据类型,其理论容量为230-1(1 073 741 823)个字节。ntext型的其他用法与text型基本一样。

     

    ·image型是用于存储大量二进制数据的可变长度数据类型,其理论容量为231-1  (2 147 483 647)个字节。Image型数据的存储模式与text型数据相同,通常用来存储图形等OLE对象。在输入数据时,与输入二进制数据一样,必须在数据前加上起始符号“0X”作为二进制标识。

     

    G.    日期和时间

     

    日期和时间数据类型代表日期和一天内的时间,包括datetime型和smalldatetime型。

     

    ·datetime型是用于存储日期和时间的结合体的数据类型。它可以存储从公元175311日零时起到公元99991231235959秒之间的所有日期和时间,其精确度可达3%秒。

     

    datetime型数据所占用的存储空间为8个字节,其中前4个字节用于存储190011日以前或以后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期;后4个字节用于存储从此日零时起所指定的时间经过的毫秒数。如果在输入时省略了时间部分,则系统将默认为12:00:00:000AM;如果省略了日期部分,系统将默认为190011日。

     

    ·smalldatetime型与datetime型相似,但其存储的日期时间范围较小,从190011日到207966日。它的精度也较低,只能精确到分钟级,其分钟个位上的值是根据秒数并以30秒为界四舍五入得到的。

     

    Smalldatetime型数据所占用的存储空间为4个字节,其中前两个字节存储从基础日期190011日以来的天数,后两个字节存储此日零时起所指定的时间经过的分钟数。

     

    H.    货币

     

    货币数据类型用于存储货币或现金值,包括money型和smallmoney型。在使用货币数据类型时,应在数据前加上货币符号,以便系统辨识其为哪国的货币,如果不加货币符号,则系统默认为“¥”。

     

    ·money型是一个有4位小数的decimal值,其取值从-263(-9 223 372 036 854 775 808) 263-1(+9 223 372 036 854 775 807),精确到货币单位的千分之十。存储大小为8个字节。

     

    ·smallmoney型货币数据值介于-2 147 483 648+2 147 483 647之间,精确到货币单位的千分之十。存储大小为 4 个字节。

     

    I.    特定

     

    SQL Server 2000中包含了一些用于数据存储的特殊数据类型,包括timestamp型和 uniqueidentifier型。

     

    ·timestamp数据类型提供数据库范围内的惟一值,它相当于binary(8)varbinary(8),但当它所定义的列在进行更新或插入数据行操作时,此列的值会自动更新。每个数据库表中只能有一个timestamp型数据列。如果表中的列名为“timestamp”,则该列的类型将被自动定义为timestamp型。

     

    ·uniqueidentifier数据类型用于存储一个16位的二进制数据,此数据称为全局惟一标识符(Globally Unique IdentifierGUID)。此数据由SQL Server 2000NEWID()函数产生,在全球各地的计算机经由此函数产生的数字不会相同。

     

    J.    用户自定义

     

    sysname数据类型是系统提供给用户的,便于用户自定义的数据类型。该数据类型被定义为NVARCHAR(128),即它可以存储128Unicode字符或256个一般字符。

     

    K.    新增数据类型

     

    前面讲到过SQL Server 2000新增了3种数据类型:bigint型、sql_variant型和table型。其中bigint型已经在整数类型中介绍过了。

     

    ·sql_variant型是一种存储SQL Server支持的各种数据类型(textntexttimestamp sql_variant除外)值的数据类型。此数据类型大大方便了SQL Server的开发工作。

     

    ·table型用于存储对表或视图处理后的结果集。table数据类型不适用于表中的列,而只能用于Transact-SQL变量和用户定义函数的返回值。这一类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便快捷。

  • 相关阅读:
    中国年薪 ¥30 万和美国年薪$ 10 万的生活水平异同
    汽车之家CMDB设计思路 – 汽车之家运维团队博客
    平民软件 | 中间件
    FIT2CLOUD
    ZeroBrane Studio
    新炬网络-领先数据资产运营商 | 数据资产管理 | 数据库运维 | 自动化运维
    中国(南京)软件开发者大会
    夏仲璞 | 全球软件开发大会北京站2016
    Nginx下流量拦截算法 | 夏日小草
    docker~dockertoolbox的加速器
  • 原文地址:https://www.cnblogs.com/perfy/p/2466055.html
Copyright © 2011-2022 走看看