1.字段属性选择
邮政编码 直接是CHAR(6)就可
能用MEDIUMINT就不用BIGIN来定义整型字段
-
尽量把字段设置为NOT NULL
有NULL的列值会使得索引、索引统计和值比较更加复杂。可为NULL的列会使用更多的存储空间,在MySQL中也需要对它进行特殊处理,当可为NULL列做索引时,每个索引需要一个额外的字节,在MyISAM更有可能导致固定大小的索引变成可变大小索引,在InnoDB中使用单独的位(bit)存储NULL值。
省份,性别定义为ENUM类型,MySQL中ENUM类型作为数值类型处理
- varchar字段定义的长度指的是字符长度,哪怕一个多字节字符也只是一个字符,如中文字符。
CHAR适合存储字符很短,或者所有值接近一个长度时,如存储MD5码、SESSION_ID等 -
时间和日期
TIMESTAMP:它保存了从1970年1月1日午夜以来的秒数,也就是常说的时间戳,它使用4个字节来存储,依赖于时区。除了特殊情况外,通常我们应该尽量使用TIMESTAMP。DATETIME:这个类型能保存1001到9999年,精度为秒,与时区无关,使用8个字节存储,存储格式封装为YYYYMMDDHHMMSS的整数,因此它是一种可排序的类型,显示时以ANSI标准定义的日期和时间表示方法显示。
结论:
1.当一个数据类型可以有多种选择多种类型的时候,应该优先考虑数字类型,其次是日期或二进制类型,最后应该是字符类型。
2.对于相同级别的数据类型,应该优先选择占用空间小的数据类型。
3. 数据类型会影响存储空间的开销
4. 数据类型会影响数据查询性能
注:数值类型的处理比文本类型快很多
2.存储引擎选择
注:一般使用InnoDB引擎则可以支持各种功能。
3.MySQL中的函数
1. 数学函数
2. 字符串函数
3. 日期时间函数
非常详细的MySQL数据库详解: http://blog.csdn.net/chenshun123/article/details/50894875
数据类型和常用字段属性:http://www.jb51.net/article/55853.htm