SqlServer数据类型
数据类型的定义,这里就不再说了,具体百度百科里都有详细的说明,数据类型的作用就是帮助我们处理各种各样数据的。
SqlServer定义了25中数据类型,每一种类型都有自己特定的用途,我们在使用的时候,就需要知道到底应该选择使用哪一种数据类型,使用哪一种类型更好,如下图:
我们在设计每一个数据表的时候,都要考虑到其中每一个列数据类型的设计,这个是以后再设计数据库的时候,要经常用到的,所以,有必要知道和掌握这些基础的知识。
这里简单的分为了二进制类型、字符类型、Unicode类型、日期和时间类型、数字类型、货币类型、逻辑类型、文本和图像类型,特殊类型等等,下面是详细的说明:
二进制类型:包括Binary、Varbinary和 Image
Binary数据类型既可以是固定长度的(Binary),也可以是变长度的。常用来存放图像等数据。
Binary[(n)]是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储容量的大小是 n + 4 个字节。常用来存放图像等数据。
Varbinary[(n)]是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储容量的大小是 n + 4个字节,不是n 个字节。
Image用于存放照片,目录图片或图画。存储的数据是以位字符串存储的,不是由SQL SERVER 解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image数据类型中。
字符类型:包括Char,Varchar和 Text
Char 是定长字符数据,其长度最多为 8KB。超过 8KB 的ASCII 数据可以使用Text数据类型存储。
Varchar是变长字符数据,其长度不超过 8KB。
区别:由于Char数据类型长度固定,因此它比Varchar类型的处理速度快。
NTEXT数据类型与TEXT.类型相似,不同的是NTEXT 类型采用UNICODE 标准字符集(Character Set), 因此其理论容量为230-1(1, 073, 741, 823)个字节,Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text数据类型存储在SQL SERVER 中。
Unicode类型:包括Nchar,Nvarchar 和Ntext
当列的长度固定不变时,应该使用 Nchar 字符类型,这时最多可以存储4000 个字符。
当列的长度变化时,应该使用Nvarchar 字符类型,同样,这时最多可以存储 4000 个字符。
当使用Ntext数据类型时,该列可以存储多于 4000 个字符。
说明:在 Microsoft SQL SERVER 中,传统的非 Unicode数据类型允许使用由特定字符集定义的字符。在 SQL SERVER安装过程中,允许选择一种字符集。
使用Unicode数据类型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,所占用空间是使用非 Unicode数据类型所占用的空间大小的两倍。
日期和时间类型:包括Datetime 和 Smalldatetime两种类型。
Datetime所存储的日期范围是从 1753 年 1 月 1 日开始,到9999 年12 月 31 日结束(每一个值要求 8 个存储字节)。
Smalldatetime所存储的日期范围是 1900年 1 月 1日开始,到 2079 年 12 月 31 日结束(每一个值要求 4 个存储字节)。
日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM8/17/98”。前一个数据类型是日期在前,时间在后,后一个数据类型是时间在前,日期在后。
日期的格式可以设定。设置日期格式的命令如下:
SetDateFormat {format | @format _var|
其中,format| @format_var 是日期的顺序。有效的参数包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默认情况下,日期格式为MDY。
例如,当执行 Set DateFormat YMD 之后,日期的格式为年月日 形式;当执行 SetDateFormat DMY 之后,日期的格式为日月年形式。
数字类型:包括包括正数和负数、小数(浮点数)和整数。
整数由正整数和负整数组成,在 Micrsoft SQL SERVER 中,整数存储的数据类型是 Int,Smallint和 Tinyint。
Int数据类型存储数据的范围是从 -2 147 483 648 到 2 147 483 647(每一个值要求4个字节存储空间)。
Smallint数据类型存储数据的范围从 -32 768 到 32 767(每一个值要求2个字节存储空间)。
Tinyint数据类型存储数据的范围是从0 到255(每一个值要求1个字节存储空间)。
说明:Int数据类型存储数据的范围大于 Smallint数据类型存储数据的范围,而Smallint 据类型存储数据的范围大于Tinyint数据类型存储数据的范围。
浮点数据类型用于存储十进制小数。浮点数值的数据在SQL Server 中采用上舍入(Round up 或称为只入不舍)方式进行存储。
所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1 ,并进行必要的进位。若一个数是上舍入数,其绝对值不会减少。如:对3.14159265358979分别进行2 位和12位舍入,结果为3.15 和3.141592653590。
Real数据类型可精确到第7 位小数,其范围为从-3.40E -38 到3.40E +38。每个Real类型的数据占用4 个字节的存储空间。
Float数据类型可精确到第15 位小数,其范围为从-1.79E -308 到1.79E +308。 每个FLOAT 类型的数据占用8 个字节的存储空间。
Float数据类型可写为Float[ n ]的形式。n 指定Float数据的精度。n 为1到15 之间的整数值。当n 取1 到7 时,实际上是定义了一个Real类型的数据,系统用4 个字节存储它;当n 取8 到15 时,系统认为其是Float 类型,用8 个字节存储它。
Decimal数据类型可以提供小数所需要的实际存储空间,但也有一定的限制,您可以用2 到17 个字节来存储从-10的38次方-1 到10的38次方-1 之间的数值。可将其写为Decimal[ p [s] ]的形式,p 和s 确定了精确的比例和数位。其中p 表示可供存储的值的总位数(不包括小数点),缺省值为18; s 表示小数点后的位数,缺省值为0。 例如:decimal (15, 5),表示共有15位数,其中整数10 位,小数5,总位数不包括小数点。
NUMERIC数据类型与DECIMAL数据类型完全相同。分为两种,是为了保持与ANSI标准兼容。
货币类型:包括Money 和 Smallmoney
Money数据类型要求 8 个存储字节,Smallmoney数据类型要求 4 个存储字节。
逻辑类型:只有一种bit型
bit数据类型只占用1个字节的存储空间,其值为0和1。只要输入的值为非0,系统都会当作1处理。注意:bit型不能定义为null值。
文本和图形类型:包括text型、ntext型和image型
文本和图形数据类型是用于存储大量的非Unicode和Unicode字符以及二进制数据的固定长度和可变长度数据类型。
text型是用于存储大量非Unicode文本数据的可变长度数据类型,其容量理论上为231-1(2 147 483647)个字节。
ntext型是用于存储大量Unicode文本数据的可变长度数据类型,其理论容量为230-1(1 073 741823)个字节。ntext型的其他用法与text型基本一样。
image型是用于存储大量二进制数据的可变长度数据类型,其理论容量为231-1 (2 147 483 647)个字节。Image型数据的存储模式与text型数据相同,通常用来存储图形等OLE对象。在输入数据时,与输入二进制数据一样,必须在数据前加上起始符号“0X”作为二进制标识。
特殊类型:
Timestamp用于表示SQL SERVER 活动的先后顺序,以二进制的格式存放。Timestamp 数据与插入数据或者日期和时间没有关系。主要用于在数据表中记录其数据的修改时间。它提供数据库范围内的唯一值,反映数据库中数据修改的相对顺序,相当于一个单调上升的计数器。当用该类型定义的列在更新或者插入数据行时,此列的值会自动更新,一个计数值将自动地添加到此数据列中。
Uniqueidentifier称做唯一标识符数据类型。它是SQL SERVER根据计算机网络适配器地址和CPU时钟产生的全局唯一标识符代码(Globally Unique Identifier,简写为GUID),因此,该数据类型可以保证在全球范围内不同的计算机所产生的标识符是唯一的。由 16 位的二进制数字组成。当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。
Cursor在实际应用中,应用程序有时只需要每次处理一条或一部分记录。在这种情况下,就需要使用游标在服务器内部处理结果集。游标可视为一种特殊的指针,它不但可以定位在结果集的特定记录上,还可以从结果集的当前位置查询一条或多条记录并对读取到的数据进行处理。
Sql_variant数据类型可以存储除文本、图形数据(TEXT、NTEXT、IMAGE)和TIMESTAMP类型数据外的其它任何合法的SQL Server数据。此数据类型大大方便了SQL Server的开发工作。
table数据类型用于存储对表或视图处理后的结果集。这一新类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便快捷。
此外,还有用户自定义数据类型,这里就不再具体的说明了,以上数据类型先了解了,等到用的时候,可以再根据具体的情况去查。