CHAR与VARCHAR
Char:长度固定为创建时声明的长度,长度范围为 0~255
Varchar:长度可变,长度为0~255(5.0.3以前,以后为0~65535)
Char插入时会把尾部空格删除
Varchar会保留空格
测试代码:
Create table vc(v VARCHAR(4) c CHAR(4));
Insert into vc values('ab ','ab ');
select length(v),length(c) from vc;
结果为: (4,2)
select concat(v,'+'),concat(c,'+') from vc;
结果为:ab + , ab+
length(v) 返回v的长度。
concat(v,’+’)合并两个字符串。
通过上述代码可以看出Char类型的空格被删除了。
ENUM类型
ENUM即枚举类型。枚举的数据大小由成员数量决定;
1个字节可以存储1~255个成员;
2个字节可以存储65535个成员;
成员数量在创建时给定。
如:
Create table t(gender enum('M','F'));
注意:ENUM类型是忽略大小写的。
ENUM类型插入时只能与其中之一匹配。
ENUM类型插入时若成员超出范围,不会报错,直接插入枚举的第一个成员。
SET类型
SET也是与枚举类似,也是为了限制输入的字符串而存在的。1个字节可以保存8个成员。
SET与枚举的不同点在于SET可以在同一条记录里插入多个成员,但每个成员不能多次出现在一条记录中。
如果同一条记录插入时存在重复成员,该成员只会被插入一次
测试代码:
Create table t (col set('a','b','c','d'));
insert into t values('a,b'),('a,d,a'),('a,b');
参考资料:《深入浅出MySQL》