MySQL中SMALLINT,TINYINT等的默认大小

时间:2015-08-09 06:49:06

标签: mysql

根据this文档,SMALLINT的默认大小为2个字节。我刚刚这样做了:

$.each(data[objectProp], function(key, element) {
//your code
})

当我做CREATE TABLE MYTABLE ( MYDATA SMALLINT UNSIGNED NOT NULL ) ENGINE=InnoDB; 时,我得到了:

  

字段,类型,空,键,默认,额外

     

' MYDATA',' smallint(5)unsigned',' NO','',NULL,'& #39;

为什么将MYDATA创建为smallint(5)?

但如果我这样做:

describe MYTABLE;

然后创建CREATE TABLE MYTABLE ( MYDATA SMALLINT(2) UNSIGNED NOT NULL ) ENGINE=InnoDB;

3 个答案:

答案 0 :(得分:4)

括号中的数字不是以字节为单位的大小。 请参阅https://dev.mysql.com/doc/refman/5.6/en/numeric-type-overview.html

附近的文档

允许存储的位数,最大显示宽度。 smallint(5)或smallint(2)都需要2个字节

答案 1 :(得分:1)

无符号smallint的最大值为65535,并且无论声明时在()中放入了什么数字,都使用2个字节。你所指的(5)只是指场的宽度。

答案 2 :(得分:1)

括号中的数字是显示宽度(请参见https://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html

无符号smallint的默认显示宽度是5,因为可以存储的最小和最大数字是0和65535。这称为smallint(5)

如果带有签名的smallint,则默认显示宽度必须为6,因为在存储最小值-32768时需要显示减号。

这也是为什么默认intint(11)而默认tinyinttinyint(4)的原因,即使可以存储的最大正值是10位数字和3位数字长。