mysql text类型能存多少字_「6」全面了解下MySQL的字符型类型:文本字符串

MySQL用字符串类型存储字符数据,并且支持文本字符串与二进制字符串,本文主要关注是前者。

先用一个表展示出字符串存在的类型:

44c8f6f38de6815ac3bda91c3dcf5119.png

【1】CHAR和VARCHAR类型

CHAR(M)为固定长度字符串,在定义时需要指定字符串长度,当保存时在右侧填充空格以达到指定的长度。

VARCHAR(M)是长度可变的字符串,当保存时会检查尾部是否存在空格,如果存在则删除。

create table str_example01(s1 char(5),s2 varchar(5));insert into str_example01 values('','');insert into str_example01 values('ab ','ab ');insert into str_example01 values('abcde','abcde');insert into str_example01 values('abcdef','abcdef');
7ec3b976423af9904034b6375219bb67.png

【2】TEXT类型

TEXT主要用来存储文章内容、评论和留言等,并且不删除保存内容的尾部空格,它有4中类型(见上图表格)。

1bc4ebbde9eb73bedde4639dbe26cd31.png

【3】ENUM类型

ENUM类型是一个字符串对象,其值为创建表时在字段规定中枚举的一列值。

语法格式:

字段名 ENU)

既然是一列值排列在一起,那肯定有下标才能区分访问。其规律如下:

ENUM值依照排列先后顺序设置索引,但空字符串排(0)在非空字符串前,NULL则排在最前(还是NULL)。

create table str_example02(s ENUM('luosi','zhouqiao','feilvbin'));insert into str_example02 values(NULL),('luosi'),('zhouqiao'),('feilvbin');
0a13055c78ded0820e3d7c8859a00680.png

【4】SET类型

SET类型与ENUM类型在定义时是类似的,区别在于ENUM类型的字段只能从定义的字段值中选择一个值插入,而SET类型的字段可以从定义的列值中选择多个字符的联合。

字段名 SET('值1','值2',……,'值N')

另外SET还有自己的其他几项特性:

  • 插入的有重复值,MySQL会自动删除重复值;
  • 对插入的顺序不重视,会按定义时的顺序写入数据库;
  • 对于插入的错误值,MySQL将自动忽略并给出警告信息,但不影响程序运行。
create table str_example03(s SET('zhouqiao','feilvbin','luoxi'));insert into str_example03 values('zhouqiao'),('zhouqiao,luoxi,feilvbin');insert into str_example03 values('fagagaf')
416ded8c208f8fcda2570e1c97dc39c6.png

总结

  • 文本字符串类型有4大类8小类;
  • 不变的CHAR和变化的VARCHAR类型;
  • 存储更多文字内容的TEXT类型;
  • 指定字段值的ENUM类型;