在创建表时,必须为表中的每列指派一种数据类型。
今天在研究二进制存储图片时候竟然不知道image类型就是二进制类型?!所有就搜集了sql中的各种数据类型汇总,成功在于点滴积累。
1. 字符数据类型
数 据 类 型 |
描 述 |
存 储 空 间 |
Char(n) |
N为1~8000字符之间 |
n字节 |
Nchar(n) |
N为1~4000 Unicode字符之间 |
(2n字节)+2字 节额外开销 |
Ntext |
最多为230–1 (1 073 741 823)Unicode字符 |
每字符2字节 |
Nvarchar(max) |
最多为230–1 (1 073 741 823)Unicode字符 |
2×字符数+2字 节额外开销 |
Text |
最多为231–1 (2 147 483 647)字符 |
每字符1字节 |
Varchar(n) |
N为1~8000字符之间 |
每字符1字节+2 字节额外开销 |
Varchar(max) |
最多为231–1(2 147 483 647)字符 |
每字符1字节+2 字节额外开销 |
2. 精确数值数据类型
数 据 类 型 |
描 述 |
存 储 空 间 |
bit |
0、1或Null |
1字节(8位) |
tinyint |
0~255之间的整数 |
1字节 |
smallint |
–32 768~32 767之间的整数 |
2字节 |
int |
–2 147 483 648~ 2 147 483 647之间的整数 |
4字节 |
bigint |
–9 223 372 036 854 775 808~ 9 223 372 036 854 775 807 之间的整数 |
8字节 |
数 据 类 型 |
描 述 |
存 储 空 间 |
numeric(p,s)或 decimal(p,s) |
–1 038+1~1 038–1之间的数值 |
最多17字节 |
money |
–922 337 203 685 477.580 8~ 922 337 203 685 477.580 7 |
8字节 |
smallmoney |
–214 748.3648~2 14 748.3647 |
4字节 |
3. 近似数值数据类型
数 据 类 型 |
描 述 |
存 储 空 间 |
float[(n)] |
–1.79E+308~–2.23E– 308,0,2.23E–308~1.79E+308 |
N< =24-4字节 N> 24-8字节 |
real() |
–3.40E+38~–1.18E– 38,0,1.18E–38~3.40E+38 |
4字节 |
4. 二进制数据类型
数 据 类 型 |
描 述 |
存 储 空 间 |
Binary(n) |
N为1~8000十六进制数字之间 |
n字节 |
Image |
最多为231–1 (2 147 483 647)十六进制数位 |
每字符1字节 |
Varbinary(n) |
N为1~8000十六进制数字之间 |
每字符1字节 +2字节额外开销 |
Varbinary(max) |
最多为231–1 (2 147 483 647)十六进制数字 |
每字符1字节 +2字节额外开销 |
5. 日期和时间数据类型
数 据 类 型 |
描 述 |
存 储 空 间 |
Date |
9999年1月1日~12月31日 |
3字节 |
Datetime |
1753年1月1日~9999年12月31日, 精确到最近的3.33毫秒 |
8字节 |
Datetime2(n) |
9999年1月1日~12月31日 0~7之间的N指定小数秒 |
6~8字节 |
Datetimeoffset(n) |
9999年1月1日~12月31日 0~7之间的N指定小数秒+/–偏移量 |
8~10字节 |
SmalldateTime |
1900年1月1日~2079年 6月6日,精确到1分钟 |
4字节 |
Time(n) |
小时:分钟:秒.9999999 0~7之间的N指定小数秒 |
3~5字节 |
6. 其他系统数据类型
数 据 类 型 |
描 述 |
存 储 空 间 |
Cursor |
包含一个对光标的引用和 可以只用作变量或存储过程参数 |
不适用 |
Hierarchyid |
包含一个对层次结构中位置的引用 |
1~892字节+2 字节的额外开销 |
SQL_Variant |
可能包含任何系统数据类 型的值,除了text、ntext、 image、timestamp、xml、 varchar(max)、nvarchar(max)、 varbinary (max)、sql_variant以 及用户定义的数据类型。最大尺 寸为8000字节数据+16字节 (或元数据) |
8016字节 |
Table |
用于存储用于进一步处理的数 据集。定义类似于Create Table。 主要用于返回表值函数的结果集, 它们也可用于存储过程和批处理中 |
取决于表定 义和存储的行数 |
Timestamp or Rowversion |
对于每个表来说是唯一的、自 动存储的值。通常用于版本戳, 该值在插入和每次更新时自动改变 |
8字节 |
Uniqueidentifier |
可以包含全局唯一标识符 (Globally Unique Identifier, GUID)。guid值可以从Newid() 函数获得。这个函数返回的值对 所有计算机来说是唯一的。 尽管存储为16位的二进制值, 但它显示为char(36) |
16字节 |
XML |
可以以Unicode或非Unicode形式存储 |
最多2GB |