数据类型及其详解
在这里我收集了七大类数据类型,分别介绍如下:
五 字符数据类型<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
存储字符数据时,选择一种为此目的而设计的数据类型。每种字符数据类型使用1个或2个字节存储每个字符,具体取决于该数据类型使用ANSI(American National Standards Institute)编码还是Unicode编码。
Unicode数据类型前有一个n。例如,nchar是Unicode数据类型,对应于使用ANSI编码的char数据类型。定义一个字符数据类型时,指定该列允许存储的最大字节数。例如,char(10)最多可以存储10个字符,因为每个字符要求1个字节的存储空间,而nchar(10)最多可以存储5个字符,因为每个Unicode字符要求使用两个字节的存储空间。下表列出了SQL Server支持的字符数据类型。
表 字符数据类型
数据类型 |
存储空间 |
字符数 |
作用 |
char(n) |
1~8 000字节 |
最多8 000个字符 |
固定宽度的ANSI数据类型 |
nchar(n) |
2~8 000字节 |
最多4 000个字符 |
固定宽度的Unicode数据类型 |
varchar(n) |
1~8 000字节 |
最多8 000个字符 |
固定宽度的ANSI数据类型 |
varchar(max) |
最大2 GB |
最多1 073 741 824个字符 |
可变宽度的ANSI数据类型 |
nvarchar(n) |
2~8 000字节 |
最多4 000个字符 |
可变宽度的Unicode数据类型 |
nvarchar(max) |
最大2 GB |
最多536 870 912个字符 |
可变宽度的Unicode数据类型 |
text |
最大2 GB |
最多1 073 741 824个字符 |
可变宽度的ANSI数据类型 |
ntext |
最大2 GB |
最多536 870 912个字符 |
可变宽度的Unicode数据类型 |
六 二进制数据类型
有很多时候需要存储二进制数据。因此,SQL Server提供了三种二进制数据类型,允许在一个表中存储各种数量的二进制数据。下表列出了SQL Server支持二进制数据类型。
表 二进制数据类型
数据类型 |
存储空间 |
作用 |
binary(n) |
1~8 000字节 |
存储固定大小的二进制数据 |
varbinary(n) |
1~8 000字节 |
存储可变大小的二进制数据 |
varbinary(max) |
最多2 GB |
存储可变大小的二进制数据 |
image |
最多2 GB |
存储可变大小的二进制数据 |
image数据类型是这组数据类型中最流行的数据类型。该数据类型有一个不恰当的名称;它并不是专门用来存储图像的,诸如存储最近一次度假时所拍的照片的照片库。虽然可以用image数据类型存储图片,但也可以使用这种数据类型存储Word、Excel、PDF和Visio文档。使用image数据类型可以存储任何一个小于或等于2 GB的文件。
七 特殊数据类型
除了上述标准数据类型外,SQL Server还提供了另外7种特殊数据类型。下表描述了这些特殊数据类型。
表 特殊数据类型
数据类型 |
作用 |
bit |
存储0、1或null。用于基本“标记”值。TRUE被转换为1,而FALSE被转换为0 |
timestamp |
一个自动生成的值。每个数据库都包含一个内部计数器,指定一个不与实际时钟关联的相对时间计数器。一个表只能有一个timestamp列,并在插入或修改行时被设置到数据库时间戳 |
uniqueidentifier |
一个16位GUID,用来全局标识数据库、实例和服务器中的一行 |
sql_variant |
可以根据其中存储的数据改变数据类型。最多存储8 000字节 |
cursor |
供声明游标的应用程序使用。它包含一个可用于操作的游标的引用。该数据类型不能在表中使用 |
table |
用来存储随后进行的处理的结果集。该数据类型不能用于列。该数据类型的唯一使用时机是在触发器、存储过程和函数中声明表变量时 |
Xml |
存储一个XML文档,最大大小为2GB。你可以指定选项,强制只能存储格式良好的文档 |
为空性(nullability)
列定义的第二个特征是是否要求它存储一个值。数据库有一个称为null的特殊构造,你可以用它来表示某个值不存在——有点类似于“未知的”或“不可应用的”。null不是一个值,也不占用任何存储空间。
在定义列时,可以指定是否允许null。如果不允许null,则要求用户为该列指定一个值。
注意,因为不存在某个东西不可能等于不存在另一个东西——换句话说,一个null不能等于另一个null,所以不能对null进行比较。