4.2如何选择数据类型
在MYSQL创建表时,需要考虑为字段选择哪种数据类型是最合适的。只有选择了合适的数据类型,才能提高数据库的效率。
1.整数类型和浮点数类型
整数类型和浮点数类型最大的区别在于能否表达小数。整数类型不能表示小数,而浮点数类型可以表示小数。不同的整数类型的取值范围不同。TINYINT类型的取值范围为0~255。如果字段的最大值不超过255,那选择TINYINT类型就足够了。BIGINT类型的取值范围最大。最常用的整数类型是INT类型。
浮点数类型包括FLOAT类型和DOUBLE类型。DOUBLE类型的精度比FLOAT类型高.如果需要精确到小数点后10位以上,就应该选择DOUBLE类型,而不应该选择FLOAT类型.
2.浮点数类型和定点数类型
对于浮点数和定点数,当插入值的精度高于实际定义的精度时,系统会自动进行四舍五入处理。其目的是为了使该值的精度达到要求。浮点数进行四舍五入时系统不会报警,定点数会出现警告。
在未指定精度的情况下,浮点数和定点数有其默认的精度。FLOAT型和DOUBLE型默认会保存实际精度。这个精度与操作系统和硬件的精度有关。DECIMAL型默认整数位为10,小数位为0,即默认为整数。
在mysql中,定点数精度比浮点数要高。而且,浮点数会出现误差。如果要对数据的精度要求比较高,应该选择定点数。
3.CHAR类型和VARCHAR类型
CHAR类型的长度是固定的,而VARCHAR类型的长度是在范围内可变的。因此VARCHAR类型占用的空间比CHAR类型小。而且,VARCHAR类型比CHAR类型灵活。对于长度变化比较大的字符串类型,最好是选择VARCHAR类型.虽然CHAR类型占用的空间比较大,但是CHAR类型的处理速度比VARCHAR快。 因此,对于长度变化不大和查询速度要求较高的字符串类型,最好选择CHAR类型。
4.时间和日期类型
YEAR类型只表示年份。如果只需要记录年份,选择YEAR类型可以节约空间。TIME类型只表示时间。如果只需要记录时间,选择TIME类型是最合适的。DATE类型只表示日期。如果只需要记录日期,选择DATE类型是最合适的。
如果需要记录日期和时间,可以选择DATETIME类型和TIMESTAMP类型。DATETIME类型表示的时间范围比TIMESTAMP类型大。因此,若需要的时间范围比较大,选择DATETIME类型比较合适.TIMESTAMP类型的时间是根据时区来显示的。如果需要显示的时间与时区对应,那就应该选择TIMESTAMP类型。
5.ENUM类型和SET类型
ENUM类型最多可以有65535个成员,而SET类型最多只能包含64个成员。两者的取值只能在成员列表中选取。ENUM类型只能从成员中选择一个,而SET类型可以选择多个。
因此,对于多个值中选取一个的,可以选择ENUM类型。例如,“性别”字段就可以 定义成ENUM类型,因为只能在“男”和“女”中选其中一个。对于可以选取多个值的字 段,可以选择SET类型。例如,“爱好”字段就可以选择SET类型,因为可能有多种爱好。
6.TEXT类型和BLOB类型
TEXT类型与BLOB类型很类似。TEXT类型存储只能存储字符数据。而BLOB类型可以用于存储二进制数据。如果要存储文章等纯文本的数据,应该选择TEXT类型。如果需要存储图片等二进制的数据,应该选择BLOB类型。
TEXT、TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这4者最大的不同是内容长度的不同。TINYTEXT类型允许的长度最小,LONGTEXT类型允许的长度最大。BIOB类型也是如此。