(⾯试)MySQL中INT(5)和VARCHAR(20)中括号内的
数字表⽰什么,以及VAR。。。
⼀、⾸先,INT类型数据的字节⼤⼩是固定的4个字节,但是int(5)和int(11)区别在于,显⽰的数据位数⼀个是5位⼀个是11位,在开启zerofill(填充零)情况下,若int(5)存储的数字长度是⼩于5的则会在不⾜位数的前⾯补充0,但是如果int(5)中存储的数字长度⼤于5位的话,则按照实际存储的显⽰(数据⼤⼩在int类型的4个字节范围内即可),也就是说int(M)的M不代表数据的长度。
对于数值类型是定长的,也就是说,⽆论你存的数值是多少,多⼤或者多⼩,占⽤的字节⼤⼩都是固定的。例如,之前设置的int(1),虽然M值是1个字符,但是它所占⽤的空间⼤⼩永远都是4个字节的⼤⼩,换句话说就是,你可以存⼊有符号整型从-2 147 483 648到2 147 483 647包括这两个数的中间任何⼀个数。int(1)和int(11)占⽤的是4个字节,可以存⼊上述这些数,tinyint(1)和tinyint(4)占⽤的是1个字节,可以存⼊从-128到127的数,这也是为什么之前的⼀次试验,int(1)插⼊128成功,⽽tinyint(1)插⼊128却提⽰超出长度。
⽽varchar(20)中的20表⽰的是varchar数据的数据长度最⼤是20,超过则数据库不会存储。
VARCHAR列中的值为可变长字符串,长度可以指定为0到65535之间的值。VARCHAR的最⼤有效长度由
最⼤⾏⼤⼩和使⽤的字符集确定。在MySQL 4.1之前的版本,VARCHAR(50)的“50”指的是50字节(bytes),如果存放UTF8汉字时,那么最多只能存放16个(每个汉字3字节);从MySQL 4.1版本开始,VARCHAR(50)的“50”指的是50字符(character),⽆论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个。
总结:INT(M) 中M表⽰的不是数据的最⼤长度,只是数据宽度,并不影响存储多少位长度的数据;
varchar(M) 中M表⽰的是varchar类型数据在数据库中存储的最⼤长度,超过则数据库不会存储。
varchar2最大长度⼆、CHAR是⼀种固定长度的类型,VARCHAR则是⼀种可变长度的类型。
CHAR列的长度固定为创建表时声明的长度,长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进⾏⼤⼩写转换。
CHAR和VARCHAR类型声明的长度表⽰保存的最⼤字符数。例如,CHAR(30)可以占⽤30个字符。对于MyISAM表,推荐CHAR类型;对于InnoDB表,推荐VARCHAR类型。另外,在进⾏检索的时候,若列值的尾部含有空格,则CHAR列会删除其尾部的空格,⽽VARCHAR则会保留空格。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论