Mssql中一些常用数据类型的说明和区别
1、bigint
占用8个字节的存储空间,取值范围在-2^63 (-9,223,372,036,854,775,808) 到 2^63-1
(9,223,372,036,854,775,807)之间的19位整数,对应C#中的Int64/long
2、int
占用4个字节的存储空间,取值范围在-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)之间的10位整数,对应C#中的Int32/int
3、smallint
占用2个字节的存储空间,取值范围在-2^15(-32768)到2^15-1(32767)之间的5位整数,对应C#中的Int16/short
4、tinyint
占用1个字节的存储空间,取值范围在0-255之间的整数,对应C#中的Byte/byte
5、bit
最大占用1个字节的存储空间,取值0/1(false/true),对应C#中的Boolean
6、char(n)
固定长度,非Unicode字符串数据,存储长度为1-8000字节,一般用来存储长度一直或长度差异较小的数据项。n为自定义可存储的最大长度。
例如定义数据列的类型为char(5),当存储的数为123、abcd、12345时,它们所占用的存储空间都是5个字节的空间
7、varchar(n|max)
非固定长度,非Unicode字符串数据,存储长度为1-8000字节,一般用来存储长度差异较大的数据项。n为自定义可存储的最大长度。
例如定义数据列的类型为varchar(5), 当存储的数为123、abcd、12345时,它们所占用的存储空间依次为3、4、5个字节的空间(实际存储空间要+2个字节)。
当n为max时,最大存储长度为2^31-1个字节
来自msdn的建议:
- 如果列数据项的大小一致,则使用 char。
- 如果列数据项的大小差异相当大,则使用 varchar。
- 如果列数据项大小相差很大,而且大小可能超过 8,000 字节,请使用 varchar(max)。
8、nchar/nvarchar
区别于char/varchar,nchar和nvarchar可存储Unicode字符,比如汉字
英文字符在数据库中存储时占用1个字节,中文和其他一些非英文字符则占用两个字节,如果在char或者varchar中存储中文字符,在非中文的操作系统中显示为乱码??,为了解决这种问题就产生了nchar和nvarchar两种数据类型
在nchar和nvarchar中无论是中文还是英文字符都是占用两个字节,所以最多能存储4000个字符
9、text/ntext/image类型
分别用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度数据类型和可变长度数据类型,微软表示在未来的mssql版本中将会删除这三种类型,建议使用varchar(max)/nvarchar(max)和varbinary(max)代替
其他的后面再写,若有不当之处,烦请各位拍砖!