一、text属性

MySQL下的TEXT属性一种特殊的字符串,存储单位为字节,有四种类型

TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT

不同的是可以存储的字符串的长度以及空间占用大小

TINYTEXT最大存放长度为255个字符的字符串

TEXT最大存放长度为65535个字符的字符串

MEDIUMTEXT最大存放长度为16772150个字符的字符串(int最大值16M)

LONGTEXT最大存放长度为4294967295个字符的字符串(long最大值4G)

TEXT类型被用来存储非二进制字符集,二进制字符集使用blob类型的字段来存储。对于text列,插入时MySQL不会对它进行填充,并且select时不会删除任何末尾的字节

使用时不需要指定长度,因为已经有默认最大可存储字节数,长度可变

如果要存储字符,一个中文字符可能占用3个字节,存储选择哪种类型需要根据实际选择

允许的长度是指实际存健的字节数,而不是实际的完符介数。如假设一个中文字符占两个字节,那TEXT类型可存65535/2=32767个中文字符,而varchar(100)可存储100个中文字符,实际占200个字节,但varchar(65535)并不能存储65535个中文字符,因为巳超出表达范围。

以上各类型无须指定长度

#创建数据库表,e_text可存储255个字节,v_char可存储255个字符>mysql create table text_example(e_text tinytext, v_char varchar(255));#插入失败,utf8mb4用3个字节表示一个中文汉字,会超出tinytext保存范围>mysql insert into char_example values(90个中文字符,90个中文字符);#插入成功>mysql> insert into char_example values(80个中文字符,100个中文字符);

对比

1、char长度固定,即每条数据占用等长字节空间,适合用在身份证号码、手机号码等。超过255字节只能用varchar或者text

2、varchar可变长度,可以设置最大长度,适合已知最大可用长度的情况下,用在长度可变的属性。varchar可变长度,可以设置最大长度,适合用在长度可变的属性

3、text不设置长度,当不知道属性的最大长度时,适合用text,能用varchar的地方不用text

按照查询速度:char > varchar > text最慢