一、选择数据类型

零散的注意事项:

整型类型

基本介绍可见这篇文章:{% post_link mysql-basic %} - 整数计算一般使用BIGINT,即使在32位环境也是这样 - INT(11)可以指定命令行客户端显示字符的个数,但是对于真正存储值和计算是没有意义的,不会真的限制字符长度

实数类型

字符串类型

VARCHAR:

下面这些情况推荐使用VARCHAR - 列的最大长度比平均长度大的多 - 需要UTF-8这种变长的字符编码 - 列很少更新 - 需要保留末尾的空格的列

CHAR:

下面这些情况推荐使用CHAR - 定长的列 - 经常更新的列 - 非常短的列,比如在单字节字符集的情况下存储Y和N,CHAR只需要一个字节,VARCHAR需要两个。

BINARY/VARBINARY:

下面这些情况推荐使用BINARY/VARBINARY - 需要存储二进制数据并且希望比较时直接比较字节而不是字符 - 想要大小写敏感地比较数值(所有的utf8的校对规则都是不支持大小写敏感的,因此你用了utf8的CHAR/VARCHAR是大小写不敏感的)

VARCHAR既然是变长的,那么VARCHAR(5)和VARCHAR(200)不是一样吗? 答案是不一样,虽然他们存储某个字符串时,占用的空间是一样的,但是Mysql在使用内存临时表进行排序或者操作时,以及磁盘临时表来排序时,分配的空间却是与此有关的。 因此结论是尽可能地分配真实的字符长度。

BLOB/TEXT: