mysql 数据类别
发布时间:2022-03-25 23:05:56 所属栏目:MySql教程 来源:互联网
导读:mysql 数据类型: 一、char的长度是固定的,不管存储的数据是多少都会是固定的长度,上限为255个字节,varchar的上限为65535字节, char(4); //这个4表示最多存储4个【字符】, 长度可以为从0到255的任何值,当存储的字符串长度小于指定的长度, 会在字符串的
mysql 数据类型: 一、char的长度是固定的,不管存储的数据是多少都会是固定的长度,上限为255个字节,varchar的上限为65535字节, char(4); //这个4表示最多存储4个【字符】, 长度可以为从0到255的任何值,当存储的字符串长度小于指定的长度, 会在字符串的右边填充空格达到指定的长度,当查询字符串的时候会删除右边空格 二、varchar 是变长的, varchar(4)//这个4表示最多存储4个【字符】, 长度可以指定为0到65535之间的值(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节), VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节) varchar(30)最大存储30个字符;varchar(5)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样) 三、int(20)中20的涵义是指显示字符的长度 但要加参数的,最大为255,比如它是记录行数的id,插入10笔资料,它就显示00000000001 ~~~00000000010,当字符的位数超过11,它也只显示11位,如果你没有加那个让它未满11位就前面加0的参数,它不会在前面加0 20表示最大显示宽度为20,但仍占4字节存储,存储范围不变; 四、text text的上限位65535,不能设定默认值 五、总结char,varchar,text区别 char,存定长,速度快,存在空间浪费的可能,会处理尾部空格 varchar,存变长,速度慢,不存在空间浪费,不处理尾部空格,上限65535,但是有存储长度实际65532最大可用 text,存变长大数据,速度慢,不存在空间浪费,不处理尾部空格,上限65535,会用额外空间存放数据长度,顾可以全部使用65535。 长度的区别,char范围是0~255,varchar最长是64k,但是注意这里的64k是整个row的长度,要考虑到其它的column,还有如果存在not null的时候也会占用一位,对不同的字符集,有效长度还不一样,比如utf8的,最多21845,还要除去别的column,但是varchar在一般情况下存储都够用了。如果遇到了大文本,考虑使用text,最大能到4G。 效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char char和varchar可以有默认值,text不能指定默认值 取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。再者,char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节; 而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。 空间方面: 从官方文档中我们可以得知当varchar大于某些数值的时候,其会自动转换为text,大概规则如下: 大于varchar(255)变为 tinytext 大于varchar(500)变为 text 大于varchar(20000)变为 mediumtext 所以对于过大的内容使用varchar和text没有太多区别。 性能方面: 索引会是影响性能的最关键因素,而对于text来说,只能添加前缀索引,并且前缀索引最大只能达到1000字节。 而貌似varhcar可以添加全部索引,但是经过测试,其实也不是。由于会进行内部的转换,所以long varchar其实也只能添加1000字节的索引,如果超长了会自动截断。 当超过255的长度之后,使用varchar和text没有本质区别,只需要考虑一下两个类型的特性即可。 (4)、mysql为什么这么设计 对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |