MySQL 中的“unsigned”是什么意思以及何时使用它?

问题描述 投票:0回答:3

“无符号”在 MySQL 中意味着什么以及何时应该使用它?

mysql types
3个回答
605
投票

MySQL 说:

所有整数类型都可以有一个可选的 (非标准)属性 UNSIGNED。 无符号类型可用于 允许 列中只有非负数 或者 当您需要更大的鞋面时 列的数字范围。为了 例如,如果 INT 列是 UNSIGNED, 列范围的大小是 相同,但其端点从 -2147483648 和 2147483647 最多 0 和 4294967295。

什么时候使用?

问自己这个问题:此字段是否会包含负值
如果答案是否定的,那么您需要一个

UNSIGNED
数据类型。

一个常见的错误是使用从

0
开始自动递增 INT 的主键,但类型是
SIGNED
,在这种情况下,你永远不会接触任何负数,并且你正在减少可能的 id 范围减半。


3
投票

MySQL 中“无符号”是什么意思:

在模式构建(数据库设计)中,

unsigned
整数是只能容纳(非负)值的整数。

在 mySQL 上下文中,用于指定该列只能保存正值的

unsigned
方法

我应该什么时候使用它?

在架构构建中,将包含外键(如 id)的列分配给

unsigned
方法是一种很好的做法,以确保该列仅包含正值,并在使用该列的查询中防止错误和意外行为


0
投票

“无符号”的属性:

  1. 是与数字一起使用的键。
  2. 它提供了该列不会有负值的信息。
  3. 在相同的存储大小下,它为您提供了更多的列位数。

例如TINYINT(最小和最大)有符号值为“-128:127”,(最小和最大)无符号值为“0:255”。并且都从存储大小中占用 1 个字节。

什么时候使用?

你应该问自己这个问题:“从逻辑上讲,这个字段有一天可能会是负数吗?”

如果您的答案是“否”,那么您可以根据需要使用无符号。

但如果答案是“是”。那么永远不要对此列使用无符号。

例如如果它是一个字段(年龄,身高,体重,等等......)。这些值有一天不能为负数,因此我们可以将其用作“无符号”。

另一种用途

当您在表之间建立关系时。那么你必须设置一个外键。这个外键将是unsigned。因为它拥有一个“ID”值。并且“ID”值不能为负数。

您可以使用此表来了解有关数字数据类型的更多信息。numeric datatypes table

© www.soinside.com 2019 - 2024. All rights reserved.