突然发现一个问题,就是sql server,设计表的时候id主键,一般默认为int类型,但我查到int类型的范围-32768~32767,而我的数据库中的数据远不止这个数量,但我发现我的表中id值已经有超过32767的数据了.而数据库还没有出现问题,难道是我理解错了还是在sql server中主键超过范围时类型会自动变化或者别的原因?谢谢
没分了,大家见谅
6 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
sql server(2000~)中int类型的取值范围不是你说的-32768~32768,是数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。每个int类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。
而SMALLINT 数据类型存储从-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之间的所有正负整数。每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。
TINYINT数据类型存储从0 到255 之间的所有正整数。每个TINYINT类型的数据占用1 个字节的存储空间。
BIGINT 数据类型存储从-2^63 (-9 ,223, 372, 036, 854, 775, 807) 到2^63-1( 9, 223, 372, 036 ,854 ,775, 807) 之间的所有正负整数。每个BIGINT 类型的数据占用8个字节的存储空间。
- 6 回答
- 0 关注
- 971 浏览
添加回答
举报
0/150
提交
取消