int signed in mysql_什么时候应该在MySQL中使用UNSIGNED和SIGNED INT?

什么时候应该在MySQL中使用UNSIGNED和SIGNED INT?

使用哪种更好,或者这只是个人偏爱?

因为我看过它像这样使用;

负PK没有太大意义

MySQL中" unsigned"是什么意思以及何时使用它的可能重复项?

UNSIGNED仅存储正数(或零)。另一方面,带符号的可以存储负数(即可以带负号)。

这是每个INTEGER类型可以存储的值范围的表:

56e376b208dee73e05457b90d2435500.png

资料来源:http://dev.mysql.com/doc/refman/5.6/en/integer-types.html

UNSIGNED的范围从0到n,而有符号的范围从-n/2到n/2。

在这种情况下,您有一个AUTO_INCREMENT ID列,因此您没有负数。因此,使用UNSIGNED。如果在AUTO_INCREMENT列中不使用UNSIGNED,则最大可能值将是最大值的一半(并且值范围的负一半将不使用)。

但是请注意,UNSIGNED是MySQL特定的,而不是标准的SQL功能。 这意味着使用UNSIGNED可能会使将来迁移到其他RDBMS变得更加复杂,或者在使用针对标准SQL的软件库(例如SQLAlchemy)时给您带来麻烦。 我认为这应该是答案的一部分。

将UNSIGNED用于非负整数。

基本上使用UNSIGNED,您将为整数提供两倍的空间,因为您明确指定不需要负数(通常是因为存储的值永远不会为负数)。

我不同意vipin cp。

确实,第一位用于表示符号。但是1代表负值,0代表正值。超过负值的编码方式不同(二进制补码)。 TINYINT的示例:

The sign bit

|

1000 0000b = -128d

...

1111 1101b = -3d

1111 1110b = -2d

1111 1111b = -1d

0000 0000b = 0d

0000 0001b = 1d

0000 0010b = 2d

...

0111 1111b = 127d

如果您知道要存储的数字类型,则可以进行相应选择。

在这种情况下,您的" id"永远不能为负。因此,您可以使用unsigned int。

有符号整数的范围:-n / 2至+ n / 2

无符号整数的范围:0到n

因此,您可以使用正数的两倍。

相应地选择。

我想补充一件事

在signed int(即default value in mysql)中,1 bit将用于表示sign。 -1 for negative and 0 for positive.

因此,如果您的应用程序仅插入正值,则最好指定无符号。

我认为,UNSIGNED将是最好的选择,以分钟,小时或秒的格式存储time_duration(例如:resolved_call_time = resolved_time(DateTime)-creation_time(DateTime))值,这肯定是一个非负数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值