mysql - 我什么时候应该对列使用 UNSIGNED 属性?

标签 mysql sql unsigned-integer

根据文档,UNSIGNED 列不接受负数。那么这意味着我应该为始终包含正值或空值的每一列使用 UNSIGNED 属性吗?

假设这个表结构:

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

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

最佳答案

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

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

关于mysql - 我什么时候应该对列使用 UNSIGNED 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37567975/

相关文章:

swift - 二元运算符 '|' 不能应用于类型 'Int' 和 'UInt8' 的操作数

mysql - 如何将相同的用户 ID 按时间顺序分组在一起?

c# - 使用 MySqlCommand.ExecuteNonQuery 将几何数据插入表中

php - Sphinx 搜索 Api SPH_MATCH_EXTENDED 不起作用

c - 浮点单调性

c - 在 C 中添加无符号整数

javascript - 通过 Node 将记录插入 MySQL 数据库时出错

c# - Linq Entity Framework

MySQL 从同一个表中选择并更新多行

mysql - 无法从两个表中获取唯一值