我们在平常开发过程中,在设计数据的时候,经常碰到数据类型选择的问题,为了更快,更合适地选择正确的数据类型,所以在这里做个总结。
分类 | sql server 数据类型 | c# 数据类型 | 描述 | 应用场景 |
字符和字符串 | char(n) | string | 固定长度的字符串,最多存储8000个字符 | |
| nchar(n) | string | 固定长度的unicode数据,最多4000个字符 | |
| varchar(n) | string | 可变长度的字符串,最多存储8000个字符 | 【常用】,表示字符串,不包含中文。 |
| nvarchar(n) | string | 可变长度的unicode数据,最多4000个字符 | 【常用】,表示字符串,包含中文。 |
| varchar(max) | string | 可变长度的字符串,最多1,073,741,824个字符 | 【常用】,同varchar(n),存储字符更多。 |
| nvarchar(max) | string | 可变长度的unicode数据,最多536,870,912个字符 | 【常用】,同nvarchar(n),存储字符更多。 |
| text | string | 可变长度的字符串,最多2GB | |
| ntext | string | 可变长度的unicde数据,最多2GB | |
| | | | |
整数 | bit | bool | 表示0,1或NULL | 【常用】,一般用来表示是或否两种状态的字段。 |
| tinyint | byte | 表示0~255范围的整数 | 【常用】,一般用来表示状态或类型,c#中可以定义枚举来表示。 |
| smallint | short | 表示-2^15至2^15-1范围的整数 | |
| int | int | 表示-2^31至2^31-1范围的整数 | 【常用】,表示整数,或自增主键id |
| bigint | long | 表示-2^63至2^63-1范围的整数 | 【常用】,表示整数,表示范围更大。 |
| | | | |
精确数 | float | single | 表示32位浮点数字,精度7位 | 【常用】,初始化后缀使用f或F,一般用来表示金额。 |
| double | double | 表示64位浮点数字,精度15到16位 | 【常用】,初始化后缀使用d或D |
| decimal | decimal | 表示128位浮点数字,精度28到29位 | 初始化后缀使用m或M |
| | | | |
货币 | smallmoney | decimal | 同上 | |
| money | decimal | 同上 | |
| | | | |
日期时间 | smalldatetime | datetime | 表示从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 | |
| datetime | datetime | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 | 【常用】,表示时间。 |
| | | | |
二进制 | binary | byte[] | 表示固定长度的二进制数据,最多存储8000个字符 | |
| varbinary(n) | byte[] | 表示可变长度的二进制数据,最多存储8000个字符 | |
| varbinary(max) | byte[] | 表示可变长度的二进制数据,最多存储2GB | 【常用】,一般用来存储压缩后的数据。 |
| image | byte[] | 表示可变长度的二进制数据,最多存储2GB | |
| | | | |
标记 | timestamp | N/A | 时间戳,该数据类型在每一个表中是唯一的!当表中的一个记录更改时,该记录的timestamp字段会自动更新 | |
| uniqueidentifier | Guid | 存储全局标识符 (GUID) | 【常用】,一般用来表示主键,唯一标识符。 |
… … | | | | |
参考文章:
http://www.cnblogs.com/mcgrady/p/3840812.html
http://blog.sina.com.cn/s/blog_49998558010009jy.html
http://www.w3school.com.cn/sql/sql_datatypes.asp
http://www.studyofnet.com/news/214.html
原标题:为更好地设计数据库,重新整理sql server数据类型
关键词:sql