我们在日常开发过程中,在进行数据库设计的时候,经常会遇到如果选择数据类型的问题,选择什么样的数据类型最合适,然后当我们在项目中建立对应实体的时候,如何选择对应的CLR类型。针对这些问题,于是这篇文章诞生了。
SQL Server数据类型 | 占用字节数 | 表示范围 | 对应的CLR类型 | 數據類型選擇 | 适用场景 |
char | char(n) | System.String | char(2) | 使用char(2)来表示类型或状态(建议用tinyint代替) | |
varchar | varchar(n) | 1~8000 | System.String | varchar(20) | 只包含英文字符的字符串 |
nvarchar | nvarchar(n) | 1~4000 | System.String | nvarchar(20) | 包含中文字符的字符串 |
int | 4个字节 | -2,147,483,648 到 2,147,483,647 | System.Int32 | int | 表示整型,比如自增ID和表示數量 |
bigint | 8个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | System.Int64(Long) | bigint | 表示长整型,比如自增ID(数量比较大的情况下) |
decimal | 5~17字节 | System.Decimal | decimal(18,2) | 金额和價格(和錢相關的) | |
tinyint | 1字节 | 0~255 | System.Byte | tinyint | 类型和状态,比char(2)扩展性好 |
bit | 0,1或NULL | System.Boolean | bit | 一般用来表示是和否两种情形,比如IsStop | |
datetime | 8字节 | 1753 年 1 月 1 日到 9999 年 12 月 31 日 | System.DateTime | datetime | 表示日期和时间 |
time | System.TimeSpan | time(7) | 表示时间间隔,比如计时和耗時 | ||
varbinary | System.Byte | varbinary(max) | 表示二进制数据 |
varchar 与 nvarchar 的区别
varchar(n)
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。
两字段分别有字段值:我和coffee
那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。
如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar
上面是一个总结介绍,通过上面的介绍,可以知道。
varchar(4) 可以输入4个字线,也可以输入两个汉字
nvarchar(4) 可以输四个汉字,也可以输4个字母,但最多四个