int(11)和int(11)UNSIGNED的区别是什么?

时间:2011-03-08 20:39:46

标签: mysql

int(11)int(11) UNSIGNED有什么不同?

8 个答案:

答案 0 :(得分:89)

UNSIGNED类型不能为负数,但另一方面,它的正整数范围是其两倍。类型TINYINT,SMALLINT,MEDIUMINT, INT和BIGINT都有签名和未签名的版本。

对于INT,范围定义如下:

Type          Storage         Min           Max
INT                 4 -2147483648    2147483647
INT UNSIGNED        4           0    4294967295

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

有关详细信息,请参阅documentation

答案 1 :(得分:27)

INT从-2147483648转到+2147483647
UNSIGNED INT从04294967295

大括号之间的11对数字没有影响,只是它的显示方式。

答案 2 :(得分:6)

UNSIGNED意味着它只能保存非负值,例如它不能保持-20

答案 3 :(得分:4)

UNSIGNED就是这样,它的所有正数(无符号)数字。字节大小是相同的,但如果您的数据从不为负数,则可以从中获得更大的正数。 11是它将获取和显示的字符数的默认值。对于确切的大小,请搜索您正在使用的DBMS和类型。

答案 4 :(得分:3)

所有整数类型都可以具有可选(非标准)属性UNSIGNED。无符号类型可用于仅允许列中的非负数,或者当您需要列的较大上限数字范围时。例如,如果INT列为UNSIGNED,则列的范围大小相同,但其端点从-2147483648和2147483647更改为0和4294967295。

见这里:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

答案 5 :(得分:2)

无符号的人不能保留负数。

答案 6 :(得分:1)

无符号整数可以处理0到2 ^的值(整数字段的位大小)。有符号整数可以处理从-2 ^(整数字段-1的大小)到2 ^(整数字段-1的大小)-1的值。

答案 7 :(得分:0)

我想你可能想知道int和int(10)之间的区别。

让我们举一个带有zerofill关键字的int(10)示例,其中一个不是,表格喜欢:

create table tb_test_int_type(
    int_10 int(10),
    int_10_with_zf int(10) zerofill,
    unit int unsigned
);

让我们插入一些数据:

insert into tb_test_int_type(int_10, int_10_with_zf, unit)
values (123456, 123456,3147483647), (123456, 4294967291,3147483647) 
;

然后

select * from tb_test_int_type; 

# int_10, int_10_with_zf, unit
'123456', '0000123456', '3147483647'
'123456', '4294967291', '3147483647'

我们可以看到

  • 使用关键字zerofill,num小于10将填0,但没有zerofill则不会

  • 其次使用关键字zerofill,int_10_with_zf变为unsigned int类型,如果插入减号,则会得到错误Out of range value for column.....。但是你可以将减号插入int_10。此外,如果您将4294967291插入int_10,您将收到错误Out of range value for column.....

结论:

  1. 没有关键字zerofill的int(X)等于int范围-2147483648~2147483647

  2. int(X),关键字为zerofill,该字段等于unsigned int范围0~4294967295,如果num的长度小于X则将填充0到左边