根据文档,UNSIGNED
列不接受负数。那么,对于每个始终包含正值或空值的列,我应该使用UNSIGNED
属性吗?
假设这个表结构:
// vote
+----+---------+---------+-------+------------+----------+
| id | id_post | id_user | value | code_table | time |
+----+---------+---------+-------+------------+----------+
在上表中,除value
列外,所有列均为空或正数。那么我应该为除UNSIGNED
列以外的所有列设置value
属性吗?我对吗?或者使用UNSIGNED
属性是基于另一个参数吗?
答案 0 :(得分:1)
如果您确定除value
列以外的所有列都包含正值,则应将其设置为UNSIGNED
。使用UNSIGNED属性仅基于此参数作为列中所需的值。另请注意,UNSIGNED范围从0到n,其中SIGNED范围从大约-n / 2到n / 2.
在内存方面,有符号和无符号类型都占用相同的内存空间(INT为4个字节)。
答案 1 :(得分:1)
根据您将在列中存储的值使用UNSIGNED
属性。
例如,ID通常是无符号值(这只是一种惯例,没有什么能阻止你有负ID值)。
另一方面,age
列始终包含正值,UNSIGNED
值非常适合它。