如何选择数据类型及常见问题&解答

如何选择数据类型

1.整数类型和浮点数类型

整数类型不能表示小数,浮点数类型可以。TINYINT类型的取值范围为0~255,BIGINT类型的取值范围最大,最常用的整数类型是INT

浮点数类型包括FLOAT类型和DOUBLE类型。DOUBLE类型的精度比FLOAT类型高。如果需要精确到小数点后10位以上,应该选择DOUBLE类型。

2.浮点数类型和定点数类型

当插入值精度高于实际定义的精度时,对于浮点数,系统会自动四舍五入,且不会报警,定点数,系统会自动截断,且会出现警告。

在未指定精度的情况下,浮点数和定点有其默认精度。FLOAT和DOUBLE型默认会保存实际精度,这个精度与操作系统和硬件的精度有关。DECIMAL型默认整数位为10,小数位为0,即默认为整数。

在MySQL中,定点数精度比浮点数要高。而且,浮点数会出现误差。如果对数据精度要求较高,应选择定点数。

3.CHAR和VARCHAR型

CHAR类型的长度是固定的,而VARCHAR类型长度在范围内可变。因此,VARCHAR类型占用的空间比CHAR类型小。而且,VARCHAR类型比CHAR类型灵活。对于长度变化比较大的字符串类型,最好选择VARCHAR类型。

但是,CHAR类型的处理速度比VARCHAR快,因此,对于长度变化不大和查询速度要求较高的字符串类型,最好选择CHAR类型。

4.时间和日期类型

如果需要记录日期和时间,可以选择DATETIME类型和TIMESTAMP类型。DATETIME类型表示的时间范围比TIMESTAMP类型大。因此,若需要时间范围比较大,选择DATATIME类型合适。TIMESTAMP类型的时间是根据时区来显示的,如果需要显示的时间与时区对应,应该选择TIMESTAMP类型。

5.ENUM类型和SET类型

ENUM类型最多有65535个成员,而SET类型最多包含64个成员。ENUM类型只能从成员中选择一个,而SET类型可以选择多个(max64个)。

因此,对于多个值选一个的,可以选择ENUM类型,如:“性别”字段就可以定义成ENUM类型,因为只有“男”、“女”。对于可以选取多个值的字段,可以选择SET类型。如:“爱好”,因为可能有多种爱好。

6.TEXT类型和BLOB类型

TEXT类型只能存储字符数据。而BLOB类型可以存储二进制数据。如果要存储文章等纯文本数据,应该选择TEXT类型。如果需要存储图片等二进制数据,应该选择BLOB类型。

常见问题及解答

1.MySQL中什么数据类型可以存储路径?

CHAR、VARCHAR、TEXT等字符串类型均可,但如果路径中使用 “\” 符号,会被过滤,解决办法:在路径中用 “/” 或 “\\” 代替 “\”   。

2.MySQL中如何使用布尔类型?

在SQL标准中,存在BOOL和BOOLEAN类型。MySQL为了支持SQL标准,也可以定义BOOL和BOOLEAN类型。但是,BOOL和BOOLEAN类型最后转换成的是TINYINT(1)。在MySQL中,布尔类型等价于TINYINT(1)。

3.如果文章中同时存在文本和图片,应选择哪种数据类型?

最好将图片的url地址存在数据库中,这样就是纯文本格式了,当然,也可以选择BLOB类型,但这样查询效率会很慢!

上个图吧,喜欢玩蚂蚁森林和蚂蚁庄园


蚂蚁庄园


蚂蚁森林

你可能感兴趣的:(如何选择数据类型及常见问题&解答)