int(11)
和int(11) UNSIGNED
有什么不同?
答案 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从0
到4294967295
大括号之间的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.....
结论:
没有关键字zerofill
的int(X)等于int范围-2147483648~2147483647
int(X),关键字为zerofill
,该字段等于unsigned int范围0~4294967295,如果num的长度小于X则将填充0到左边