SQL数据类型
整数型
数据类型 | 数据内容与范围 | 占用的字节 |
bit | 0,1,NULL | 实际使用1bit,但会占用1字节,若一个数据中有数个bit字段,则可共占1字节 |
tinyint | 0~255 | 1字节 |
smallint | -215~215-1 | 2字节 |
int | -231~231-1 | 4字节 |
bigint | -263~-263-1 | 8字节 |
numeric | 精确数值型,-1038+1~-1038-1 | 19位5字节,1019位9字节,2028位13字节,2938位17字节 |
decimal | 精确数值型,-1038+1~-1038-1 | 19位5字节,1019位9字节,2028位13字节,2938位17字节 |
float | 近似数值型,-1.79E+308~1.79E+308 | 8字节 |
real | 近似数值型,-3.40E+38~3.40E+38 | 4字节 |
Money | 精确数值型,-263~263-1,精确到万分之一 | 8字节 |
smallmoney | 精确数值型,-214748.3648~214748.3647 | 4字节 |
(成绩的数据类型设置,可用numeric(4,1),其中4表示总共的位数,1表示小数点后一位)
字符型
数据类型 | 数据内容与范围 | 占用的字节 |
char | 1~8000个字符,非Unicode字符(ASCII字符) | 1个字符1字节 |
varchar | 1~8000个字符,非定长的非Unicode字符(依据实际使用分配) | 1个字符1字节 |
nchar | 1~4000个字符,Unicode字符(ASCII字符) | 1个字符2字节 |
nvarchar | 1~4000个字符,非定长的Unicode字符(依据实际使用分配) | 1个字符2字节 |
text | 1~2^31个字符,非Unicode字符 | 1个字符1字节 |
ntext | 1~2^31个字符,非定长的Unicode字符(依据实际使用分配) | 1个字符2字节 |
(ASCII字符无法存储中文,Unicode字符可以,一个中文字符占两个字节)
二进制数据型
数据类型 | 数据内容与范围 | 占用的字节 |
binary | 1~8000字节,定长二进制数据 | 会另外增加4字节,尾端空白字符会保留 |
varbinary | 1~8000字节,非定长二进制数据 | 会另外增加4字节,尾端空白字符会删除 |
image | 2^31-1个字符,非定长的二进制数据 | 最大可存储2GB |
(任何类型的数据都可以存储在这种类型的字段中,不需要数据转换,image可以存储图片本身,需要将图片转化为二进制流的形式)
时间日期型
数据类型 | 数据内容与范围 | 占用的字节 |
detetime | 时间日期型,1753/1/1~9999/12/31 | 8字节 |
smalldetetime | 时间日期型,1900/1/1~2079/6/6 | 4字节 |
其他数据类型
数据类型 | 数据内容与范围 | 占用的字节 |
timestamp | 十六进制 | 8字节 |
uniqueidentifier | 全局唯一标识符 | 可用NEWID()函数生成一个该种类型的字段值,16字节 |
sql_variant | 0~8016字节 | |
table |
(timestamp提供数据库范围内的唯一值。此类型相当于binary(8),它所定义的列更新或添加数据行时,此列的值会被自动更新。
uniqueidentifier数据类型成为全球唯一标识符。
sql_variant可以存储除文本、图形数据和timestamp类型数据外的其他任何合法的SQL Server数据。
table数据类型用于存储对表或视图处理后的结果集,这一类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷)