MySQL用字符串类型存储字符数据,并且支持文本字符串与二进制字符串,本文主要关注是前者。
先用一个表展示出字符串存在的类型:

【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');
【2】TEXT类型
TEXT主要用来存储文章内容、评论和留言等,并且不删除保存内容的尾部空格,它有4中类型(见上图表格)。

【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');
【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')
总结
- 文本字符串类型有4大类8小类;
- 不变的CHAR和变化的VARCHAR类型;
- 存储更多文字内容的TEXT类型;
- 指定字段值的ENUM类型;