char 和 varchar
char 和 varchar:都用来存储字符串,它们保存和检索方式不同。char属于固定长度的字符类型,varchar属于可变长度的字符类型。
1.存储不同:例如当字段 属性是char(4)和varchar(4)时候,插入'a',前者需要4个字节空间,后者需要2个字节。
2.检索不同:char会自动删除字段数据的尾部空格,varchar则保留。由于char是固定长度,所以它的处理速度比varchar快很多,但是很浪费很多的存储空间,还要对空格进行处理。所以对于那些长度基本保持不变且对查询速度有要求的可以用char.
在INNODB引擎中尽量使用varchar,对于内部的行存储格式没有区分固定长度和可变长度,所以使用char不一定比varchar的处理速度要快。
TEXT和bolb
text和bolb也是长度可变的字符类型,在存储大量字符串的时候可以采用text和bolb,bolb可以存储二进制数据,text只能存储字符类的数据。blob和text会引起一些性能问题。特别是在进行了大量数据删除的操作后,会有很多‘空洞’,占用没必要的空间,这时候可以使用 OPTIMIZE TABLE table_name 语句来进行清理粉碎分件,并重新利用多余的空间。
定点型和浮点型
定点型实际上是以字符串的形式存储的, 所以定点型更加精确的保存数据。两者存入的时候都会进行四舍五入,若定义的长度比实际的精确度低的话会截断存储。