MySQL数据类型--数据类型选择

MySQL数据类型--数据类型选择

转载地址:http://www.cnblogs.com/songjy2116/p/5220581.html


在MySQ中创建表时,需要考虑为字段选择哪种数据类型是最合适的。选择合适的数据类型,会提高数据库的效率。

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、

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类型允许的长度最大。BLOB类型也是如此。

常见问题及解答

1. MySQL中什么数据类型能够储存路径?
答:MySQL中,CHAR、VARCHAR、TEXT等字符串类型都可以存储路径。但是,如果路径中使用"\"符号时,这个符号会被过滤。解决办法是,路径中用"/"或者"\\"来代替"\"。这样MySQL就不会自动过滤路径分隔字符,可以完整的表示路径。

2. MySQL中如何使用布尔类型?
答:在SQL标准中,存储BOOL和BOOLEAN类型。MySQL为了支持SQL标准,也是可以定义BOOL和BOOLEAN类型的。但是,BOOL和BOOLEAN类型最后换成是TINYINT(1)。也就是说,在MYSQL中,布尔类型等价于TINYINT(1)。因此,创建表时将一个字段定义成BOOL和BOOLEAN类型,数据库中真实定义的是TINYINT(1)。

CREATE TABLE IF NOT EXISTS `test`.`bool_tbl`(
`a` BOOL,
`b` BOOLEAN
);
INSERT INTO `test`.`bool_tbl`
VALUES(true, false), (false, false), (true, true);
SELECT * FROM `test`.`bool_tbl`;

3. MySQL中如何存储JPG图片和MP3音乐?
答:一般情况下,数据库中不直接存储图片和音乐文件。而是存储图片和文件的路径。如果实在需要在MySQL数据库中存储图片和音频文件,就选择BLOB类型。因为,BLOB类型可以用来存储二进制类型的文件。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值