“无符号”在 MySQL 中意味着什么以及何时应该使用它?
MySQL 说:
所有整数类型都可以有一个可选的 (非标准)属性 UNSIGNED。 无符号类型可用于 允许 列中只有非负数 或者 当您需要更大的鞋面时 列的数字范围。为了 例如,如果 INT 列是 UNSIGNED, 列范围的大小是 相同,但其端点从 -2147483648 和 2147483647 最多 0 和 4294967295。
什么时候使用?
问自己这个问题:此字段是否会包含负值?
如果答案是否定的,那么您需要一个
UNSIGNED
数据类型。
一个常见的错误是使用从
0开始自动递增
INT
的主键,但类型是 SIGNED
,在这种情况下,你永远不会接触任何负数,并且你正在减少可能的 id 范围减半。
在模式构建(数据库设计)中,
unsigned
整数是只能容纳正(非负)值的整数。
在 mySQL 上下文中,用于指定该列只能保存正值的
unsigned
方法。
在架构构建中,将包含外键(如 id)的列分配给
unsigned
方法是一种很好的做法,以确保该列仅包含正值,并在使用该列的查询中防止错误和意外行为。
“无符号”的属性:
例如TINYINT(最小和最大)有符号值为“-128:127”,(最小和最大)无符号值为“0:255”。并且都从存储大小中占用 1 个字节。
什么时候使用?
你应该问自己这个问题:“从逻辑上讲,这个字段有一天可能会是负数吗?”
如果您的答案是“否”,那么您可以根据需要使用无符号。
但如果答案是“是”。那么永远不要对此列使用无符号。
例如如果它是一个字段(年龄,身高,体重,等等......)。这些值有一天不能为负数,因此我们可以将其用作“无符号”。
另一种用途
当您在表之间建立关系时。那么你必须设置一个外键。这个外键将是unsigned。因为它拥有一个“ID”值。并且“ID”值不能为负数。