2016-06-01 123 views
2

根据文档,UNSIGNED列不接受负数。那么是不是应该为每个总是包含正值或空值的列使用UNSIGNED属性?什么时候应该完全使用UNSIGNED属性作为列?

假设该表结构:

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

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

回答

1

如果您确定除value列以外的所有列都将包含正值,那么您应该将其设置为UNSIGNED。使用UNSIGNED属性仅基于此参数作为您在列中预期的值。还要注意UNSIGNED的范围从0到n,其中SIGNED的范围是从-n/2到n/2。

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

+1

我明白了。谢谢.. upvote – stack

1

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

举例来说,ID通常是无符号值(这只是一个约定,没有什么能够防止你有负ID值)。

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

+0

明白了。谢谢.. upvote – stack

相关问题