整数类型有:
Tinyint、smallint、mediumint、int、bigint这五种 。
属性:unsigned
长度:可以为整数类型制定宽度,例如:int(11)对大多数应用是没有意义的,他不会限制值得合法范围,只会影响显示字符的个数。
实数类型有:
Float、double、decimal这三种。
Decimal可以储存比bigint还大的整数,可用于存储精确的小数。小数点后有几位都可以精确地储存下来。
Float和double类型支持使用标准的浮点进行近似计算,对于计算来说float和double的效率更高一些
字符串类型有:
Varchar、char、text、blob这四种。
Varchar类型是用来存储可变长得字符串,它比定长类型更省空间。需要注意的是,varchar使用1或2个额外字节来记录字符串的长度,列长度小于255字节,使用1个字节表示,否则用2个字节表示。对于varchar来说,如果它储存的内容超出指定长度的话,会被截断。
Char是定长的,根据定义的字符串长度分配足够的空间。
Char会根据需要的采用空格进行填充以方便比较。
Char适合储存很短的字符串,或者所有的值都接近同一长度。Char同样只要它超出了字符串的长度,也会被截断。
对于经常变更的数据来说,使用char比使用varchar要更好,因为char不容易产生碎片。
对于非常短的列,char要比varchar在存储空间上来说更有效率。只分配真正需要的空间,更长的列会消耗更多的内存。
对于blob和text类型来说,要尽量的避免使用它,因为它们查询会使用临时表,导致严重的性能开销。
枚举类型
有时可以使用枚举来代替常用的字符串类型。
把不重复的集合存储成一个预定义集合。
枚举的值时非常紧凑的,把列表的值压缩到一个或者两个字节。
内部储存的其实是整数。
尽量避免使用数字作为enum枚举的常量,因为容易混乱。
排序是按照内部储存的整数来进行排序。
枚举会使表大小大大减小。
日期时间类型
尽量使用timestamp,比datetime空间效率高。
用整数保存时间戳的格式通常不方便处理。
如果我们要储存微妙,可以使用bigint储存。
列属性
常见的列属性有:
auto_increment、default、notnull、zreofill