数据库设计 - C3 - 数据类型以及数据转换函数

上传人:豆浆 文档编号:2723148 上传时间:2017-07-26 格式:PPTX 页数:32 大小:2.80MB
返回 下载 相关 举报
数据库设计 - C3 - 数据类型以及数据转换函数_第1页
第1页 / 共32页
数据库设计 - C3 - 数据类型以及数据转换函数_第2页
第2页 / 共32页
数据库设计 - C3 - 数据类型以及数据转换函数_第3页
第3页 / 共32页
数据库设计 - C3 - 数据类型以及数据转换函数_第4页
第4页 / 共32页
数据库设计 - C3 - 数据类型以及数据转换函数_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数据库设计 - C3 - 数据类型以及数据转换函数》由会员分享,可在线阅读,更多相关《数据库设计 - C3 - 数据类型以及数据转换函数(32页珍藏版)》请在金锄头文库上搜索。

1、SQLServer数据库设计复习,数据类型以及数据转换函数,目标,掌握SQL2008中常用数据类型掌握部分数据类型范围及各自之间相互区别在设计数据表的时候会选择合适的数据类型掌握使用Convert和Cast函数进行数据类型或者格式的转换,数据类型分类,字符数据类型精确数值数据类型近似数值数据类型二进制数据类型日期和时间数据类型其他系统数据类型CLR集成-自定义数据类型,字符数据类型,字符数据类型(字符数据是由任何字母、符号和数字任意组合而成的数据。)varcharchartextnvarcharncharntext,字符、字节、Unicode字符,字符:人们使用的记号,抽象意义上的一个符号。如

2、 1, 中, a, $, ¥, 字节:计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。如 0x01, 0x45, 0xFA, Unicode字符: Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,每个字符占用2个字节。这样理论上一共最多可以表示 65,536(2的16次方) 个字符。基本满足各种语言的使用。,字符数据类型存储空间及范围,字符数据类型区别,CHAR:CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么

3、不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。VARCHAR:存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。TEXT:text存储可变长度的非Unicode数据,最大长度为231-1(2,147,483,647)个字符。,NCHAR、NVARC

4、HAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar

5、、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。,特别要提的数据类型是text和ntext。text数据类型用于在数据页内外存储大型字符数据。应尽可能少地使用这两种数据类型,因为可能影响性能但可在单行的列中存储多达2GB的数据。与text数据类型相比,更好的选择是使用varchar(max)类型,因为将获得更好的性能。另外,text和ntext数据类型在SQL Server的一些未来版本中将不可用,因此现在开始还是最好使用varchar(max)和nvarchar(max)而不是text和ntext数据类型。,精确数值数据类型,精确数值数据

6、类型bittinyintsmallintintbigintnumericdecimalmoneyfloatreal,精确数值数据类型存储空间及范围,numeric 和 decimal 数据类型的默认最大精度值是 38。如decimal和numeric等数值数据类型可存储小数点右边或左边的变长位数。Scale是小数点右边的位数。精度(Precision)定义了总位数,包括小数点右边的位数。例如,14.88531可为numeric(7,5)或decimal(7,5)。如果将14.25插入到numeric(5,1)列中,它将被舍入为14.3。p 和 s 必须遵守的规则:0 = s = p = 38。

7、对于 decimal 和 numeric 数据类型,Microsoft SQL Server 将精度和小数位数的每个特定组合看作是不同的数据类型。例如,decimal(5,5) 和 decimal(5,0) 被当作不同的数据类型。,近似数值数据类型,floatreal,近似数值数据类型存储空间及范围,Float和Real数据类型为近似数据。每个数据包括科学计数法,由于缺少精度就造成了数据丢失。例如,三分之一这个分数记作0.3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中数据不完全一样。你就可以将1,234,467,890存储为1.23E+9。也就是说

8、1.23这个数据中的小数点可以向右移9位。你可以看到,在用这种方法存储数据时,你丢失了一些小数。在转换成科学计数法时,原数据(1,234,467,890)就变成了1,230,000,000。现在返回到数据类型。Float和real数据类型能用科学计数法存储,唯一的区别就是这些值得范围和存储大小。上面的表为这些数据类型值的范围。Real数据类型需要4个字节的存储空间,并且固定精度为7。你可以用这些浮点数据指定精度或整个数据的数字,即从1到53。存储空间大小为4个字节(精度小于25时)到8个字节(精度为25到53)。,二进制数据类型,binaryimageVarbinary,二进制数据类型存储空间

9、及范围,varbinary、binary、varbinary(max)或image等二进制数据类型用于存储二进制数据,如图形文件、Word文档或MP3文件。其值为十六进制的0x00xf。image数据类型可在数据页外部存储最多2GB的文件。image数据类型的首选替代数据类型是varbinary(max),可保存最多8KB的二进制数据,其性能通常比image数据类型好。SQL Server 2008的新功能是可以在操作系统文件中通过FileStream存储选项存储varbinary(max)对象。这个选项将数据存储为文件,同时不受varbinary(max)的2GB大小的限制。,日期和时间数据

10、类型,datedatetimedatetime2datetimeoffsetsmalldateTimetime,日期和时间数据类型存储空间及范围,datetime和smalldatetime数据类型用于存储日期和时间数据。smalldatetime为4字节,存储1900年1月1日2079年6月6日之间的时间,且只精确到最近的分钟。datetime数据类型为8字节,存储1753年1月1日9999年12月31日之间的时间,且精确到最近的3.33毫秒。SQL Server 2008有4种与日期相关的新数据类型:datetime2、dateoffset、date和time。通过SQL Server联机

11、丛书可找到使用这些数据类型的示例。datetime2数据类型是datetime数据类型的扩展,有着更广的日期范围。时间总是用时、分钟、秒形式来存储。可以定义末尾带有可变参数的datetime2数据类型-如datetime2(3)。这个表达式中的3表示存储时秒的小数精度为3位,或0.999。有效值为09之间,默认值为3。,datetimeoffset数据类型和datetime2数据类型一样,带有时区偏移量。该时区偏移量最大为/-14小时,包含了UTC偏移量,因此可以合理化不同时区捕捉的时间。date数据类型只存储日期,这是一直需要的一个功能。而time数据类型只存储时间。它也支持time(n)声

12、明,因此可以控制小数秒的粒度。与datetime2和datetimeoffset一样,n可为07之间。,其他系统数据类型,cursorhierarchyidSQL_Varianttabletimestamp or rowversionuniqueidentifierxml,CLR集成,在SQL Server 2008中,还可使用公共语言运行库(Common Language Runtime,CLR)创建自己的数据类型和存储过程。这让用户可以使用Visual Basic或C#编写更复杂的数据类型,以满足业务需求。这些类型被定义为基本的CLR语言中的类结构。,CAST和CONVERT,CAST和C

13、ONVERT用来更改一个值的数据类型或格式。两个函数的目的相同,但CONVERT有能力去更改格式。格式可以用来把数字4431.334更改为常用的货币风格4,431.33(每3个数字一个逗号并且小数点后保留2位),或者把4位的年2007更改位两位的年07。,CAST函数,CAST ( expression AS data_type ),CONVERT函数,CONVERT(data_type,expression,style),例子:SELECTCONVERT(varchar(30),getdate(),101)now结果为:now-09/15/2001,SELECTCONVERT(varchar

14、(100),GETDATE(),0):0516200610:57AMSELECTCONVERT(varchar(100),GETDATE(),1):05/16/06SELECTCONVERT(varchar(100),GETDATE(),2):06.05.16SELECTCONVERT(varchar(100),GETDATE(),3):16/05/06SELECTCONVERT(varchar(100),GETDATE(),4):16.05.06SELECTCONVERT(varchar(100),GETDATE(),5):16-05-06SELECTCONVERT(varchar(100)

15、,GETDATE(),6):160506SELECTCONVERT(varchar(100),GETDATE(),7):0516,06SELECTCONVERT(varchar(100),GETDATE(),8):10:57:46SELECTCONVERT(varchar(100),GETDATE(),9):0516200610:57:46:827AMSELECTCONVERT(varchar(100),GETDATE(),10):05-16-06SELECTCONVERT(varchar(100),GETDATE(),11):06/05/16SELECTCONVERT(varchar(100

16、),GETDATE(),12):060516,SELECTCONVERT(varchar(100),GETDATE(),13):1605200610:57:46:937SELECTCONVERT(varchar(100),GETDATE(),14):10:57:46:967SELECTCONVERT(varchar(100),GETDATE(),20):2006-05-1610:57:47SELECTCONVERT(varchar(100),GETDATE(),21):2006-05-1610:57:47.157SELECTCONVERT(varchar(100),GETDATE(),22):

17、05/16/0610:57:47AMSELECTCONVERT(varchar(100),GETDATE(),23):2006-05-16SELECTCONVERT(varchar(100),GETDATE(),24):10:57:47SELECTCONVERT(varchar(100),GETDATE(),25):2006-05-1610:57:47.250SELECTCONVERT(varchar(100),GETDATE(),100):0516200610:57AMSELECTCONVERT(varchar(100),GETDATE(),101):05/16/2006SELECTCONVERT(varchar(100),GETDATE(),102):2006.05.16,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号