char和varchar,text的区别

char和varchar,text的区别

  1. 区别

1.在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。
2.存储方式和检索方式
存储方式和数据的检索方式也都不一样。
3.按照查询速度:
char最快, varchar次之,text最慢。
4.储存长度:
储存长度
具体说明:

一.在新版本的mysql中char(n)和varchar(n)中的n表示的都是字符数
其中char中的n最大长度是255个字符,如果是utf8编码方式, 那么char类型占255 * 3个字节。(utf8下一个字符占用1至3个字节)
mysql存储是按字符来计算的,不同编码对应的字节不同;
UTF-8:一个汉字=3个字节GBK:一个汉字=2个字节

varchar最大空间是65535个字节, 存放字符数量跟字符集有关系;varchar实际范围是65532或65533, 因为内容头部会占用1或2个字节保存该字符串的长度;如果字段default null(即默认值为空),整条记录还需要1个字节保存默认值null。如果是utf8编码, 那么varchar最多存65532/3 = 21844个字符
在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。它们的存储方式和数据的检索方式也都不一样。

二.详细的区别

char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用什么trim之类的函数去过滤空格。varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。text:存储可变长度的非Unicode数据,最大长度为2^31-1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。

5.适用范围:
1、 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。2、 varchar可变长度,可以设置最大长度;适合用在长度可变的属性。3、 text不设置长度, 当不知道属性的最大长度时,适合用text。

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
charvarchartext都是用于存储文本数据的数据类型,但它们之间有以下区别: 1. 存储长度:char是固定长度的,varchartext是可变长度的。例如,如果定义一个char(10)类型的字段,那么无论实际存储的数据是多长,都会占用10个字节的存储空间;而如果是varchar(10)或text类型的字段,实际存储的数据长度则会根据数据大小动态调整。 2. 存储空间:由于char是固定长度的,所以它们在存储时会占用更多的存储空间。例如,存储一个长度为5的字符串,char(10)类型需要占用10个字节的存储空间,而varchar(10)或text类型只需要占用6个字节的存储空间。 3. 查询效率:由于char是固定长度的,所以在查询时比varchartext更快。这是因为char的每个字符在存储时都会占用相同的存储空间,所以在查询时可以更快地定位到每个字符的位置。 4. 字符集:charvarchartext都支持各种字符集,但它们之间的区别在于存储的方式不同。charvarchar存储在表中时会根据表的字符集进行编码,而text则是以二进制形式存储的。 综上所述,选择使用charvarchar还是text应该根据实际需求来进行选择。如果需要存储固定长度的文本数据,可以使用char类型;如果需要存储可变长度的文本数据且对存储空间有要求,可以使用varchar类型;如果需要存储大量的文本数据,可以使用text类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想家NO1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值