MySQL的CHAR和VARCHAR类型
2018-01-19 09:23
225 查看
CHAR和VARCHAR类型类似,都用来存储字符串,但他们保存和检索的方式不用。CHAR属于固定长度的字符类型,而VARCHAR属于可变长度的字符类型。
表8-1显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别。
![](https://img-blog.csdn.net/20180119090301158?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM2OTEwMzAw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
注意表8-1中最后一行的值只适合MySQL运行在非“严格模式”时,如果MySQL运行在严格模式,超过列长度的值将不会保存,并且会出现错误提示,
从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索从CHAR列删除了尾部的空格
![](https://img-blog.csdn.net/20180119090847053?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM2OTEwMzAw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
由于CHAR是固定长度的,所以它的处理速度比VARCHAR快得多,但是其缺点是浪费存储空间,程序需要对行尾空格进行处理,所以对于那些长度变化不大并且对查询速度有较高要求的数据可以考虑使用CHAR类型来存储。
另外,随着MySQL版本的不断升级,VARCHAR数据类型的性能也在不断改进并提高,所以在许多的应用中,VARCHAR类型被更多地使用。
在MySQL中,不同的存储引擎对CHAR和VARCHAR的使用原则有所不同。
MyISAM存储引擎:建议使用固定长度的数据列代替可变长度的数据列
MEMORY存储引擎:目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系。两者都是作为CHAR类型处理
InnoDB存储引擎:建议使用VARCHAR类型,对于InnoDB数据表,内部的行存储格式没有区别固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列性能要好,因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。
表8-1显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别。
注意表8-1中最后一行的值只适合MySQL运行在非“严格模式”时,如果MySQL运行在严格模式,超过列长度的值将不会保存,并且会出现错误提示,
从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索从CHAR列删除了尾部的空格
由于CHAR是固定长度的,所以它的处理速度比VARCHAR快得多,但是其缺点是浪费存储空间,程序需要对行尾空格进行处理,所以对于那些长度变化不大并且对查询速度有较高要求的数据可以考虑使用CHAR类型来存储。
另外,随着MySQL版本的不断升级,VARCHAR数据类型的性能也在不断改进并提高,所以在许多的应用中,VARCHAR类型被更多地使用。
在MySQL中,不同的存储引擎对CHAR和VARCHAR的使用原则有所不同。
MyISAM存储引擎:建议使用固定长度的数据列代替可变长度的数据列
MEMORY存储引擎:目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系。两者都是作为CHAR类型处理
InnoDB存储引擎:建议使用VARCHAR类型,对于InnoDB数据表,内部的行存储格式没有区别固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列性能要好,因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。
相关文章推荐
- MySQL列类型之——CHAR与VARCHAR
- mysql中char,varchar与text类型的区别和选用
- mysql中char,varchar与text类型的区别和选用
- mysql的char和varchar类型
- MySQL的char和varchar类型的区别
- mysql的char,varchar,text类型的区别总结
- MySQL 字段类型varchar,CHAR,text
- MySQL数据类型char与varchar中数字代表的究竟是字节数还是字符数?
- MySQL基础知识---------CHAR和VARCHAR类型
- 【MySQL基础】String类型 CHAR和VARCHAR类型等
- mysql中char,varchar与text类型的区别和选用
- mysql笔记 数据类型:char varchar year datatime
- mysql中char,varchar与text类型的区别和选用
- MySQL 数据库中的字段类型 varchar 和 char 的主要区别是什么?哪 种字段的查找效率要高,为什么?
- MYSQL中VARCHAR和CHAR类型
- mysql列类型char,varchar,text,tinytext,mediumtext,longtext的比较与选择
- MySQL中varchar与char类型区别
- mysql字段类型选择时char和varchar如何选择
- MySQL中数据类型(char(n)、varchar(n)、nchar(n)、nvarchar(n)的区别)(转)
- MySQL数据类型char、varchar、text的比较