根据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;
。
答案 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时需要显示减号。
这也是为什么默认int
是int(11)
而默认tinyint
是tinyint(4)
的原因,即使可以存储的最大正值是10位数字和3位数字长。