6-2-1 数值数据 数值数据可以用来做数值运算处理,当我们要存放纯数字的数据,或是要对存放的内容作数值运算时,可以将它定义成数值的数据类型。SQL Server 2000提供许多可以存放数值数据的数据类型,如Int,Decimal,Real等。这些数值数据类型的特性及数值范围说明如表6-1所示。 表6-1 数据类型的特性及取值范围
从表6-1中可以发现float浮点数据类型可分为单精度与双精度两种,一般来说,除非是在进行科学运算需要较精确的值,需要用到双精度,否则一般使用单精度就足够了。另外,使用浮点数据类型可能会产生部分位数数据遗失的问题,例如,单精度数据类型,当数值位数超过7位时,只会保留最前面的7位数字(数值123456789保存成单精度后会变成123456700);双精度数据类型只会保留15位数字。 当我们要指定数值数据的数据类型时,可以先通过存放的数值数据是否包含小数来决定使用整数类型的数据类型,或是带有小数的数据类型,接着再根据数值范围选择一个最适当的数据类型。 例如,年龄数据是一个数值数据,它通常是以正整数来表示,而且它的数值范围通常不会超过255,为了节省空间我们可以将它定义成tinyint数据类型;平均成绩数据为0~100之间的数值,通常保留两位小数,可以将它定义为 5 Bytes的Decimal数据类型(1~9位数),或是单精度浮点数据类型float或real。 | ||||||||||||||||||||||||||||||||
6-2-2 货币数据 货币数据是专门针对金额数据而定义的,它可以说是一种特殊的小数数值数据,固定为4位小数。在SQL Server中提供两种货币数据类型:money与smallmoney,这两种货币数据类型的特性说明如表6-2所示。 表6-2 两种货币数据类型的说明
6-2-3 日期数据 日期数据是用来表示日期与时间,当我们要在表中存放日期时间信息,如出生日期、数据传入系统的时间等,就可以将列定义为日期时间数据类型。在SQL Server中,根据占用的字节以及数据的精度,定义了两种日期时间数据类型——datetime与smalldatetime,它们的特性说明如表6-3所示。 表6-3 两种日期时间数据类型说明
续表
其实这种日期时间数据在系统中是以数值数据的形式存在的,数值整数的部分是用来指定该日期距离基准日的天数。例如,系统的基准日为1900/1/1,数值30,表示从1900/1/1算起的第30天,也就是1900/1/30;小数部分则是用来表示时间,例如,数值0.5表示半天,也就是12:00。所以日期时间数值30.5就是指1900年1月30日的上午12:00。 | ||||||||||||||||||||||||||||||||||||
6-2-4 字符串数据 前面介绍的数值数据类型(含货币数据)只能允许输入数字,而字符串数据内则可以包含文字、数字或其他的特殊符号,几乎所有可以在计算机上输入的信息都可以视为是字符串数据。在定义字符串数据类型时,必须指定一个数值,用来表示字符串数据的字符长度。在char,varchar与text等字符串类型中,不论是字母、数字或中文字,每一个字符都占用一个字节空间。 1. char数据类型 char数据类型是用来存放固定长度的字符串内容,其最大长度可达8,000个字符(8K)。当我们要保存长度固定的数据(如代号)时,可以将它定义为char数据类型。 当我们在char数据类型内存入长度小于指定大小的字符串时,它将会自动在字符串后面补空格填满整个长度,使数据长度固定。 2. varchar数据类型 varchar数据类型较char数据类型有弹性,它可以随着存放的数据长度大小自动调整其占用的数据空间,当存入的数据长度小于指定的大小时,它不会在数据后面补空格,而是以实际存入的数据长度保存。其最大长度可设置为8,000个字符。 当数据内容长度的变异性较大时,varchar数据类型将是较好的选择,它可以减少不必要的空间浪费。例如,在产品数据的产品简述上,有些产品可能需要使用200到300个字来描述,有些产品则只需要短短20到30个字就可以介绍完,这时若将它定义为char数据类型,每一个产品的产品简述都固定占用200到300个字符长度;如果定义为varchar,则是占用实际输入的简述内容的字符长度。 3. text数据类型 char防护层与varchar数据类型最大只能定义到存放8000个字符(8K),如果要存放的数据长度超过这个限制时,可以使用text数据类型。text数据类型和varchar数据类型一样,都是一个可变长度的数据类型,它允许的最大长度限制为231-1(2,147,483,647)个字符。 6-2-5 Unicode数据 前面介绍的三种字符串类型是使用数据库的字符集来定义字符串的内容,当要将这些数据转移到其他使用不同字符集的数据库时,数据的转换可能会发生错误,产生乱码。为了使数据能够在不同数据库(字符集)间顺利地转移,可以使用Unicode标准字符形式来定义字符串数据,所有的字符集的字符都有对应于这个标准的定义。 Unicode字符串类型包含nchar,nvarchar与ntext三种数据类型,分别对应前面的char,varchar与text数据类型。不过,这种Unicode标准是以2个字节代表一个字符,因此它可以允许的数据长度将会是非Unicode字符串类型的一半,也就是最大长度4,000个字符。如果预计要保存的数据长度将会大于4,000个字符,就必须将数据类型定义为ntext。 6-2-6 Binary数据 描写夜晚的句子Binary数据是以十六进制的方式来表示数据,它可以接受1~9的数字,与A~F间的字母。通常我们可以利用它来表示图片或影像数据,或者是存放特殊格式化的文件数据,如Word,Excel,PDF文件等。 SQL Server提供binary,varbinary以及image等三种存放Binary数据的数据类型,其中binary数据类型为一固定长度的数据类型,它会以固定的长度处理数据,当数据长度不足时会自动填补到指定的固定长度。varchar与image数据类型则是可变长度的数据类型,会随着数据内容调整长度。一般来说,使用varchar数据类型应该已经足够,如果预期数据长度将会超过8KB,就要改用image数据类型。 表6-4
| |||||||||||||||
6-2-7 其他特殊数据类型 番茄酱前面介绍的几个数据类型,其定义内容非常明确,如要保存日期、时间数据就使用日期时间数据类型、要存放文字就使用字符串数据类型、要存放数值就使用数值类型的数据类型等。除了这些数据类型外,SQL Server还提供了一些无法分类的特殊数据类型,将常用到的数据类型说明如下。 1. bit数据类型 bit美国迪士尼数据类型就好像我们在程序语言中常用的Boolean布尔数据类型一样,如果数据内容只有True或Fal,1或0两个值时,可以将它定义为bit数据类型。例如,在产品数据中,可以利用它来表示该货品是否为新上市;在人员基本数据中,可以利用它来表示人员性别为男生或女生等。 实际上bit数据类型是以一个bit的位空间来存放数据,它的内容只有可能是0或1两种,我们必须自行定义0代表什么、1代表什么,例如,在“新上市”列中,可以定义数值为1时表示True(该货品为新上市),数值为院师0表示Fal(货品非新上市)。 2. timestamp数据类型 timestamp数据类型是一个binary的递增数据类型,它会在数据行加入或更改时自动产生,产生的值在数据库中是唯一的,不会有重复,通常我们可以使用它来作为列的版本戳记。由于这个时间戳记会随着数据行的变动而更改,因此最好不要将它设置为表的索引键,而且在一个表中也应该只会有一个timestamp数据类型的列。 timestamp列的内容是根据@@DBTS函数所取得的目前数据库时间戳记数值而更新的,与数据行插入或更改的日期与时间没有直接的关系。如果用户想要自动记录表中数据修改的时间,应该要使用datetime或smalldatetime数据类型,并利用事件触发程序来写入日期时间数据。 3. uniqueidentifier数据类型 uniqueidentifier数据类型是一个包含16字节的十六进制数字,用来表示全域唯一标识项(GUID)。这个GUID在不同的机器上、时间上都不同,因此对于一个跨国际、具有多台数据库服务器的企业,使用GUID作为辨识码来唯一标示数据行,可以确保所有这些数据库数据的汇整不会发生数据重复的问题。 在将列定义为uniqueidentifier数据类型时,必须将列的默认值设置为NEWID函数,这样当数据列插入到表时,就会调用NEWID函数自动产生GUID值。 4. sql_variant数据类型 sql_variant数据类型可保存text,ntext,timestamp与sql_variant以外的所有SQL Server支持的数据类型。当用户无法确定表的某个列内将会存放哪种类型的数据类型时,可以将它定义为sql_variant数据类型,允许它接受任何数据类型的数据,以避免在填入数据时产生数据类型不符的错误。 |
本文发布于:2023-05-24 22:56:54,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/89/927305.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |