第9章SQL server 列数据类型和属性.docx
- 文档编号:1629133
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:15
- 大小:119.60KB
第9章SQL server 列数据类型和属性.docx
《第9章SQL server 列数据类型和属性.docx》由会员分享,可在线阅读,更多相关《第9章SQL server 列数据类型和属性.docx(15页珍藏版)》请在冰豆网上搜索。
第9章SQLserver列数据类型和属性
第9章SQLserver2008列数据类型和属性
数据类型是数据的一种属性,是数据所表示信息的类型。
在SQLServer2008系统中,表中的每一列都有一个与之对应的特定数据类型和列数据属性,例如允许空,或者不允许空。
9.1数据类型
SQLServer2008系统提供了36种数据类型,它们每种数据类型的固有特性,我们可以将其分为8大类,下面分别对每一类数据类型的属性和含义展开叙述。
1.数字数据类型
数字数据类型包括:
bigint、int、smallint、tinyint、bit、decimal、numeric、money、smallmoney、float、real等11种数据类型。
根据数值的精度,数字数据类型又可以分为精确数字类型和近似数字类型两大类。
这些数据类型的数字可以用于各种数值运算。
它们的具体功能解释如表3-1所示。
表3-1数字数据类型
数据类型
功能解释
精
确
类
型
bigint
该数据类型中存储容量最大的一种,长度是8个字节,每个字节的长度是8位,且可以存储正负数字。
bigint数据类型可以存储从-263(-9223372036854775808)到263-1(9223372036854775807)范围的所有正负数。
int
它的长度是4字节,每个字节长度是8位,且可以存储正负数。
以int数据类型存储的每个值占用4个字节,共32位,其中31位用作存储数字,1位用于表示正负。
int数据类型的取值范围是-231(-2147483648)到231-1(2147483647)。
实际上,int数据类型是最常用的数据类型,只用当int数据类型表示的数据长度不足时,才考虑使用bigint数据类型。
smallint
它的长度是2字节,共16位,也可以存储正负数,其中15位用作存储数字,以为用于表示负数。
因此,其取值范围是-215(-32768)到215-1(32767)。
tinyint
该类型数据可以存储从0到255范围内的所有数据。
以tinyint数据类型存储的每个值占用1个字节。
Bit
可以存储0、1或者Null数据的数据类型。
这种数据类型主要用于一些条件逻辑判断。
也可以把TRUE和FALSE数据存储到Bit数据类型中,这时需要按照字符格式存储TRUE和FALSE数据。
money
由money数据类型存储的货币值有两个4字节整数构成。
前面的一个4字节表示货币值的整数部分,后面的一个4字节表示货币值的小数部分。
money数据类型存储货币值的范围从-263(-922337203685477.5808)到263-1(+922337203685477.5807),可以精确到万分之一的货币单位。
smallmoney
由smallmoney数据类型存储的货币值由两个2字节整数构成,前面的一个2字节整数表示货币值的整数部分,后面一个2字节整数表示货币值的小数部分。
以smallmoney存储的货币值的范围从-214748.3648到214748.3647,也可以精确到万分之一的货币单位。
近
似
类
型
Decimal/numeric
decimal数据类型的精度是变化的,因此该数据类型的长度是不定的。
decimal数据类型的取值范围是-1038+1至1038-1。
float
该类型数据范围为–1.79E+308~–2.23E–308、0和2.23E–308~1.79E+308。
利用float来声明变量和表中列时,可以指定用来存储按科学计数法记录的数据尾数的bit数。
如float(n),n的范围是1~53。
当n的取值为1~24时,float类型数据可以达到的精度是7位,用4个字节来储存;当n的取值范围是25~53时,float类型数据可以达到的精度是15位,用8个字节来储存。
real
该数据类型可以存储正的或者负的十进制数值,最大可以有7位精确位数。
他的存储范围从-3.40E-38~3.40E+38。
每个real类型的数据占用4个字节的存储空间。
2.字符数据类型
字符数据类型也是SQLServer中最常用的数据类型之一,用于存储固定长度或可变长度的字符数据。
在SQLServer2008系统中,提供了char类型、varchar类型、text类型、nchar类型、nvarchar类型和ntext类型6种。
其中,前3种数据类型是非Unicode字符数据类型,后3种是Unicode字符数据类型。
它们的用法和功能解释如表3-2所示。
表3-2字符数据类型
char
使用char数据类型存储数据时每个字符占用一个字节的存储空间。
使用固定长度来存储字符,最长可以容纳8000个字符。
使用它定义表中列的数据类型时,应该给定数据的最大长度。
如果实际数据的字符长度小于给定的最大长度时,则多余的字节会被空格填充;如果实际数据的字条长度大于给定的最大长度时,则超过的字符将会被截断。
在使用字符型常量为字符数据类型赋值时,必须使用双引号或单引号将字符型常量括起来。
varchar
该数据类型的使用方式与char数据类型的使用方式基本相同。
SQLServer利用varchar数据类型来存储最长可以达到8000字符的变长字符型数据。
与char数据类型不同,varchar数据类型的存储空间,随存储在表列中的每一个数据的字符数的不同而自动调整。
text
该数据类型主要就是用来存储预计超过8000字符的变长字符数据,最大长度可以达到231-1个字符。
nchar
与char数据类型类似,不同的是nchar数据类型n的取值为1~4000。
nchar数据类型采用Unicode标准字符集,Unicode标准用两个字节为一个存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都包括在内,在一个数据列中就可以同时出现中文、英文、法文等,而不会出现编码冲突。
nvarchar
与varchar数据类型类似,nvarchar数据类型也采用Unicode标准字符集,n的取值范围为1~4000。
在SQLServer2008中,nvarchar还可以定义为nvarchar(max),可以存储数量巨大的变长字符串,数据最大长度可以达到230-1个字符,并且完全兼容所有的SQLServer内置的字符串函数。
微软公司建议使用nvarchar(max)替代ntext类型。
ntext
与text数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。
ntext数据类型采用Unicode标准字符集,最大长度可以达到230-1个字符。
3.二进制数据类型
二进制数据类型用于存储二进制的数据,包括binary、varbinary和image数据类型。
其中,binary用于存储固定长度的二进制数据,varbinary用于存储可变长度的二进制数据。
binary(n)和varbinary(n)的数据长度由n值来决定,n的取值范围是1~8000。
image数据类型用于存储图像信息。
SQLServer的早期版本使用长二进制数据的image数据类型。
在SQLServer2008系统中,这个数据类型已由varbinary(max)数据类型取代。
只有在数据的字节数超过了8KB的情况下,才使用image数据类型,其中max可以达到的最大存储字节数为231-1。
binary(n)和varbinary(n)的默认值是1。
如果要存储的二进制数据的大小比较一致,建议使用binary(n)数据类型。
如果将要存储的二进制数据之间的大小差别比较大,则应该使用varbinary(n)数据类型。
如果将要存储的二进制大于8000字节,就必须使用varbinary(max)数据类型。
image数据类型和varbinary类型相似的原因是他也是一种可变长度的二进制数据类型,区别在于可保存的数据长度不同,image类型可以存储高达2GB的数据;数据保存的物理位置不同,varbinary类型的数据与行中其他列上的数据在物理上是被保存在一起的,而对于image数据类型列的数据与行的其他部分是分开保存的,行上只保存了一个指针,SQLServer通过这个指针找到数据。
image类型通常用于保存图像二进制文件和二进制对象。
同使用字符类型的方法一样,如果某个数据的值超过了数据定义时规定的最大长度,则多于的值会被服务器自动截去。
如果是使用binary数据类型,则数据长度不够时服务器会在多于的字节上补充0。
4.日期和时间数据类型
在SQLServer2008以前的版本中,日期和时间数据类型只有datetime和smalldatetime两种类型,这两种类型的差别在于其表示的日期和时间范围不同,时间精确度不同。
而在SQLServer2008系统中,日期和时间类型的最大转变就是在datetime和smalldatetime两种类型的基础上又引入了4种日期和时间数据类型,分别为date、time、datetime2和datetimeoffset;此外还增加了新的日期和时间函数功能。
这些数据类型的用法和功能解释如表3-3所示。
表3-3日期和时间数据类型
数据类型
功能解释
date
该数据类型只存储日期型数据类型,不存储时间数据。
date数据类型的取值范围从0001-01-01到9999-12-31。
time
该数据类型就像日期数据类型一样,如果你只想存储时间数据而不需要存储日期部分就可以利用time数据类型。
其取值范围从00:
00:
00.0000000到23:
59:
59.9999999。
datetime2
该数据类型也是一种数据时间混合的数据类型,不过其时间部分秒数的小数部分可以保留不同位数的值,比原来的datetime数据类型取值范围要广。
用户可以根据自己的需要通过设置不同的参数来设定小数位数,最高可以设到小数点后七位(参数为7),也可以不要小数部分(参数为0),以此类推。
datetimeoffset
该数据类型是由年、月、日、小时、分钟、秒和小数秒组成的时间戳结构。
小数秒的最大小数位数为7。
该数据类型具有时区偏移量。
此偏移量指定时间相对于协调世界时(UTC)偏移的小时和分钟数。
系统使用时区偏移量获取本地时间。
时区偏移量必须包括符号(加或减)以表示是用UTC加上还是减去偏移量。
偏移量的有效小时数介于-14和+14之间。
分钟偏移量的符号取决于小时偏移量的符号:
如果小时偏移量的符号为负,则分钟偏移量必须为负或零;如果小时偏移量的符号为正,则分钟偏移量必须为正或零;如果小时偏移量的符号为零,则分钟偏移量可以为-0.59到+0.59之间的任何值。
datetime
该数据类型所存储的日期范围是从1753年1月1日开始到9999年12月31日结束,时间精确度是3.33毫秒。
smalldatetime
该数据类型所存储的日期范围是1900年1月1日开始到2079年12月31日结束,时间精确度是1分钟。
5.空间数据类型
SQLServer2008支持用于存储空间数据的平面空间数据类型(geometry)和地理空间数据类型(geography)。
这些类型支持用来创建、比较、分析和检索空间数据的方法和属性。
两种数据类型都是作为SQLServer中的.NET公共语言运行时(CLR)数据类型实现的。
geometry数据类型支持平面或欧几里得(平面球)数据。
geometry数据类型符合适用于SQL规范的开放地理空间联盟(OGC)简单特征1.1.0版。
另外,SQLServer支持geography数据类型,该数据类型可存储诸如GPS纬度和经度坐标之类的椭圆体(圆球)数据。
geometry和geography
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 SQL server 列数据类型和属性 数据类型 属性