mysql 数据类型
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,一、char的长度是固定的,不管存储的数据是多少都会是固定的长度,上限为255个字节,varchar的上限为65535字节,char(4); //这个4表示最多存储4个【字符】,长度可以为从0到255
千家信息网最后更新 2025年02月01日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)存储和计算均一样;
参考:http://www.cnblogs.com/billyxp/p/3548540.html
一、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)存储和计算均一样;
参考:http://www.cnblogs.com/billyxp/p/3548540.html
长度
字符
存储
字节
空间
最大
空格
数据
上限
索引
时候
两个
字符串
尾部
效率
速度
处理
类型
有效
前缀
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
夺汇网络技术销售一个月能开几单
数据库系统概论投影公式
乐图金菊花更新不了数据库
维护网络安全建设网络强国
网络技术研究生什么
金山区网络软件开发服务收费
mysql怎么给服务器授权
服务器管理ftp
数据库触发器约束更新的值
贵阳软件开发平均工资
计算机网络技术主要是
浪潮服务器登录管理口界面
数据库凭据存储
软件开发 需要的资源
服务器装什么安全系统
扁桃爆笑服务器
江西省教育网络安全知识入口
出售肉鸡服务器
奇观技术软件开发先锋
数据库表的序列
苹果手机游戏服务器不同步
家里邮箱服务器地址在哪里
最mc服务器列表
关于手机中安全的网络安全
服务器网络安全编程
数据库死锁简单例子
在网络安全和信息化上讲话
保障两会期间 网络安全
软件开发费要交印花税
极限共和国连不上服务器