mysql中的字符串类型
字符串类型 | 字节 | 描述及存储需求 |
CHAR(M) | M | M为0~255之间的整数 |
VARCHAR(M) | | M为0~65536之间的整数 |
TINYBLOB | | 允许长度0~255字节 |
BLOB | | 允许长度0~65535字节 |
MEDUIMBLOB | | 允许长度0~167772150字节 |
LONGBLOB | | 允许长度0~4294967295 |
TINYTEXT | | 允许长度0~255字节 |
TEXT | | 允许长度0~65535字节 |
MEDIUMTEXT | | 允许长度0~167772150字节 |
LONGTEXT | | 允许长度0~4294967295字节 |
VARBINARY(M) | M | 允许长度0~M个字节的边长字节字符集 |
BINARY(M) | M | 允许长度0~M个字节的定长字节字符集 |
CHAR于VARCHAR类型
CHAR和VARCHAR很类似,都是用来保存Mysql中较短的字符串,主要区别在于:CHAR列的长度固定为创建表时声明的长度,长度可以为从0~255的任何值,而VARCHAR的值可以是变长字符串,长度可以指定0~65535之间的值,在检索的时候,CHAR列会删除尾部的空格而VARCHAR则保留了这些空格。
这样看的更清楚
CHAR列最后的空格在做操作的时候都被删除,而VARCHAR依然保留这些空格
ENUM类型
枚举类型,它的值范围需要在创建表时通过枚举方式显示指定,对1~255个成员的枚举需要1个字节存储,对于255~65535个成员,需要2个字节存储,最多允许65535个成员。
可以看出来ENUM类型是忽略大小写的,还可以看出对于插入不在ENUM指定范围内的值时,并有警告,而是成功插入,并且是enum('M','F')的第一个值M,而且只允许从值集合中选取单个值,不能一次取多个值。
SET类型
SET和enum非常相似,里面可以包含0~64个成员,根据成员的不用,存储上也有不同。
1~8成员的集合,占1个字节
9~16成员的集合,占2个字节
17~24成员的集合,占3个字节
25~32成员的集合,占4个字节
33~64成员的集合,占8个字节
set类型一次可以选取多个成员,而ENUM则只能选一个,就相当于ENUM是单选,而set是复选。
可以看出set类型可以从允许值的集合中选择任意1个或多个元素进行组合,所以对于输入的值只要是在允许值的组合范围内,都可以正确的写入到set类型中,对于超过的允许值范围如('a,d,f')是不能写入到上面的例子中的,而对于(‘a,d,a’)这样包含的重复成员将只取一次,写入后的结果为'a,d'。