网站地图    收藏   

主页 > 后端 > mysql数据库 >

mysql中int、bigint、smallint 和 tinyint的区别详细介绍

来源:未知    时间:2019-06-14 10:05 作者:小飞侠 阅读:

[导读] 今天带来mysql中int、bigint、smallint 和 tinyint的区别详细介绍 1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方 11111111 在计算机中也就是 -128到127 1.BIT[M] 位字段类型,M表示每个值...

    

今天带来mysql中int、bigint、smallint 和 tinyint的区别详细介绍


1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方 11111111 在计算机中也就是


-128到127


1.BIT[M]


位字段类型,M表示每个值的位数,范围从1到64,如果M被忽略,默认为1


2.TINYINT[(M)] [UNSIGNED] [ZEROFILL]  M默认为4


很小的整数。带符号的范围是-128到127。无符号的范围是0到255。


3. BOOL,BOOLEAN


是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。


4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默认为6


小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。


5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默认为9


中等大小的整数。带符号的范围是-8388608到8388607。无符号的范围是0到16777215。


6. INT[(M)] [UNSIGNED] [ZEROFILL]   M默认为11


普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。


7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默认为20


大整数。带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。


注意:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。


tinyint(1) 和 tinyint(4) 中的1和4并不表示存储长度,只有字段指定zerofill是有用,

如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充。


 


---------------------


char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:


  char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.


(在检索操作中那些填补出来的空格字符将被去掉)


在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).


 


在MySQL中用来判断是否需要进行对据列类型转换的规则


  1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.


  2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.


  3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.


例外:长度小于4个字符的char数据列不会被转换为varchar类型


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论