数据类型及其详解
在这里我收集了七大类数据类型,分别介绍如下:
五
字符数据类型<?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
进行比较。