在使用MySQL创建数据表时都会遇到一个问题,如何为字段选择合适的数据类型。
例如,创建一张员工表用来记录员工的信息,这时对员工的各种属性如何来进行定义?也许大家会想,这个问题很简单,每个字段可以使用很多种数据类型来定义,比如int、float、double、decimal等。其实正因为可选择的数据类型太多,才需要依据一些原则来“挑选”最适合的数据类型。
以下将详细介绍字符、数值、日期数据类型的一些选择原则。
通常会选择满足应用的最小存储类型来保存,这样不仅能够节约存储,更能提供表的操作效率。
- CHAR与VARCHAR
CHAR和VARCHAR类型类似,都用来存储字符串,但它们保存和检索的方式不同。CHAR属于固定长度的字符类型,而VARCHAR属于可变长度的字符类型。
由于CHAR是固定长度的,所以它的处理速度比VARCHAR快得多,但是其缺点是浪费存储空间,程序需要对行尾空格进行处理,所以对于那些长度变化不大并且对查询速度有较高要求的数据可以考虑使用CHAR类型来存储。
对于字符类型,要根据存储引擎来进行相应的选择。
对精度要求较高的应用中,建议使用定点数来存储数值,以保证结果的准确性。
对含有TEXT和BLOB字段的表,如果经常做删除和修改记录的操作要定时执行OPTIMIZE TABLE功能对表进行碎片整理。
日期类型要根据实际需要选择能够满足应用的最小存储的日期类型。