MySQL中字段类型char、varchar和text的区别
发布网友
发布时间:2022-04-21 18:12
我来回答
共1个回答
热心网友
时间:2022-04-07 20:25
在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。
它们的存储方式和数据的检索方式也都不一样。
数据的检索效率是:char
>
varchar
>
text
具体说明:
char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用什么trim之类的函数去过滤空格。
varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
text:存储可变长度的非Unicode数据,最大长度为2^31-1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。
关于存储空间:
在使用UTF8字符集的时候,MySQL手册上是这样描述的:
基本拉丁字母、数字和标点符号使用一个字节;
大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言;
韩语、中文和日本象形文字使用三个字节序列。
结论:
1、经常变化的字段用varchar;
2、知道固定长度的用char;
3、超过255字节的只能用varchar或者text;
4、能用varchar的地方不用text;
5、能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;
6、同一张表出现多个大字段,能合并时尽量合并,不能合并时考虑分表,原因请考
优化InnoDB表BLOB,TEXT列的存储效率
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:MySQL数据库迁移快速导出导入大量数据shell脚本操作mysql数据库删除重复的数据MySQL数据库列的增删改实现方法MySQL实现类似Oracle序列的方案mysql实现sequence功能的代码Can''t
connect
to
local
MySQL
through
socket
''/tmp/mysql.sock''解决方法mysql中rpm方式安装的详解Mysql常用函数大全(分类汇总讲解)利用MySQL主从配置实现读写分离减轻数据库压力mysql+spring+mybatis实现数据库读写分离的代码配置
MySQL中字段类型char、varchar和text的区别
在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。它们的存储方式和数据的检索方式也都不一样。数据的检索效率是:char > varchar > text 具体说明:char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长...
MySQL中char,varchar和text的区别
1.他们的存储方式和数据的检索方式都不一样。数据的检索效率是:char>varchar>text 2.空间占用方面,要具体情况具体分析了。CHAR(M) M个字节,0 <=M<= 255 VARCHAR(M) L+1个字节,其中L<=M且0 <=M<= 65535 TEXT L+2个字节,其中L< 216 Char为定长,varchar,text为变长 Char...
mysql中char,varchar与text类型的区别和选用
(1)char: char不用多说了,它是定长格式的,但是长度范围是0~255. 当你想要储存一个长度不足255的字符时,mysql会用空格来填充剩下的字符。因此在读取数据时,char类型的数据要进行处理,把后面的空格去除。(2)varchar: 关于varchar,有的说最大长度是255,也有的说是65535,查阅很多资料后发...
mysql中char,varchar与text类型的区别和选用
CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。VARCHAR(size)保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。TEXT存放最...
mysql text和varchar区别
1、text查询速度慢,varchar查询速度快 2、text不设置长度,varchar可设置长度 3、text需要2个字节空间记录字段的总字节数,varchar最大空间是65535个字节;但text存储不了这么多字符,varchar可以
mysql中char,varchar与text类型的区别和选用
char:它是定长格式的,但是长度范围是0~255 varchar数据类型的长度支持到了65535字节 text:与char和varchar不同的是,text不可以有默认值,其最大长度是2的16次方-1 总结起来,有几点:经常变化的字段用varchar 知道固定长度的用char 尽量用varchar 超过255字符的只能用varchar或者text 能用varchar的地方...
mysql中char,varchar与text类型的区别和选用
char 是固定长度的字符串,不足长度时会用空格补足,长度0-255;比如char(20),如果实际数据是"123",则会自动补17个空格;varchar 是可变长度的字符串,不足时不会补空格,超过时会自动截断,长度0-255;text 是长文本字符串,长度0-65535 此外,还有MEDIUMTEXT,LONGTEXT等 ...
mysql中char,varchar与text类型的区别和选用
char一般储存长度固定的字符串,比如IP,设定char长度15,存储的字符串12,存储空间占用15;varchar一般储存长度不固定的字符串,比如邮箱,设定var长度100,存储的字符串50,存储空间占用50;所以两者比较char类型查询速度比较快,占用存储空间大;varchar类型查询速度比较慢,占用存储空间小;相对前两者,text...
mysql中char,varchar与text类型的区别和选用
【char是一种固定长度的类型】,【varchar则是一种可变长度的类型】 由于某种原因char 固定长度,所以在处理速度上要比varchar快速很多,但是相对费存储空间,所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型
MySQL中char,varchar和text的区别
char固定长度,不够后面补空格,varchar指定最大长度,长度不够以实际长度为准,不补空格,text是大字段,一般尽量少用