mysql数据类型

1:整形

  • TINYINT SMALLINT MEDIUMINT INT BIGINT

属性:unsigned表示无符号的意思,也就是非负数,只用于整型
长度:可以为整数类型指定宽度,对大多数应用是没有意义的,不会限制值的合法范围,只会影响显示字符的个数;如果没有达到这个宽度,会在前面zerofill
FLOAT DOUBLE DECIMAL
DECIMAL可存储比BIGINT还大的整数,可以用于存储精确的小数
FLOAT和DOUBLE类型支持使用标准的浮点进行近似计算(小数点后有取值范围)计算

2:字符串

  • VARCHAR CHAR TEXT BLOB

varchar用于存储可变长度字符串,它比定长类型更节省空间
varchar使用1个或2个额外字节记录字符串的长度,列长度小于255字节,使用1个字节表示,否则用2个,会截取超过设定的长度
char定长,根据定义的长度分配足够的空间,会采用空格填充不够的空间
char适合存储很短的字符串或者所有值都接近同一个长度(密码),也会被截断超过定义的长度
对于经常变更的数据,char比varchar更好,char不容易产生碎片
对于非常短的列,char比varchar在存储空间上更有效率
尽量分配真正需要的长度空间,减少消耗的内存
blob/text少用,会产生临时表,消耗更大的内存

3:枚举

优势可以使用枚举代替常用的字符串类型
把不重复的集合存储成一个预定义的集合
非常紧凑,把列表压缩到一个或两个字节
内部存储的是整数
尽量避免使用数字作为枚举的常量,易混乱
排序按照内部存储的整数进行排序
使表大大减小

4:时间

尽量使用timestamp,比datetime空间效率高
用整数保存时间戳的格式通常不方便处理
如果存储微妙,可以使用bigint

标签: mysql

添加新评论