我应该何时准确地使用UNSIGNED属性?

时间:2016-06-01 11:57:09

标签: mysql sql unsigned-integer

根据文档,UNSIGNED列不接受负数。那么,对于每个始终包含正值或空值的列,我应该使用UNSIGNED属性吗?

假设这个表结构:

// vote
+----+---------+---------+-------+------------+----------+
| id | id_post | id_user | value | code_table |   time   |
+----+---------+---------+-------+------------+----------+

在上表中,除value列外,所有列均为空或正数。那么我应该为除UNSIGNED列以外的所有列设置value属性吗?我对吗?或者使用UNSIGNED属性是基于另一个参数吗?

2 个答案:

答案 0 :(得分:1)

如果您确定除value列以外的所有列都包含正值,则应将其设置为UNSIGNED。使用UNSIGNED属性仅基于此参数作为列中所需的值。另请注意,UNSIGNED范围从0到n,其中SIGNED范围从大约-n / 2到n / 2.

在内存方面,有符号和无符号类型都占用相同的内存空间(INT为4个字节)。

答案 1 :(得分:1)

根据您将在列中存储的值使用UNSIGNED属性。

例如,ID通常是无符号值(这只是一种惯例,没有什么能阻止你有负ID值)。

另一方面,age列始终包含正值,UNSIGNED值非常适合它。