我什么时候应该在MySQL中使用UNSIGNED和SIGNED INT?

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT

id INT(11) NOT NULL AUTO_INCREMENT

推荐答案

UNSIGNED只存储正数(或零).另一方面,签名可以存储负数(即,可能有负数sign).

以下是每INTEGER种类型可以存储的值范围表:

MySQL INTEGER types and lengths
Source: http://dev.mysql.com/doc/refman/5.6/en/integer-types.html

UNSIGNED的范围从0102,而有符号的范围从-n/2n/2.

在本例中,您有一个AUTO_INCREMENT ID的列,因此不会有负数.因此,使用UNSIGNED.如果不将UNSIGNED用于AUTO_INCREMENT列,则最大可能值将是AUTO_INCREMENT列的一半(值范围的负一半将不使用).

Mysql相关问答推荐

过程/别名是有点长的MySQL命令的一部分吗?

S优化联接更新的最佳方式是什么?

如果WHERE语句包含所有列,唯一键顺序是否重要?

MySQL:一个查询中的SELECT语句,用于从一个表中检索所有数据,并仅从另一个表中检索一个数据

如何对 varchar() 数据值使用聚合窗口函数?

如何从mysql中的不可用日期范围获取可用日期范围?

Select 同一张表中的结果数?

Mysql根据文本语言或行数将列拆分为多列

当查询 MySQL 的 goroutine 过多时,Go 会出现panic

在 SQL 中将列添加为 End_date,间隔为 +100 天

在 postgresql 中实现 UML 类:创建类型与创建表

如何在sql中挑出某些名称

MySQL:将日期时间插入其他日期时间字段

如何通过 mysql workbench 将数据导入 mysql 数据库?

MySQL触发器在某些条件下防止INSERT

在mysql中复制没有数据的数据库 struct (带有空表)

MYSQL_ROOT_PASSWORD 已设置但在 docker 容器中获取用户'root'@'localhost'的访问被拒绝(使用密码:YES)

如何计算表格的列数

Yii2 如何进行 where AND 或 OR 条件分组?

数据截断:第 1 行的logo列数据太长