Mysql 学习 ->数据类型篇(字符串类型)

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'。

 

posted @ 2017-10-21 21:18  king`s  阅读(20535)  评论(1编辑  收藏  举报