您的位置:首页 > 数据库 > MySQL

mysql 数据类型选择

2016-04-09 13:54 375 查看
1、整型和浮点型
如果不需要小数部分,则使用整数来保存;如果需要表示小整数部分,则使用浮点整数类型。对于浮点整数列,村诶的数值会对该列定义的小整数位进行四舍五入。例如。如果列的值的范围为1~99999,若使用整数,则mediumint usigned 是最好的类型;若需要存储小数,则使用float类型。浮点类型包括float和double类型。double类型的精度比float类型高,因此,如果需要存储精度较高时,应该选择double类型
2、浮点数和定点数
浮点数容易产生误差,因此对于精度要求比较高时,建议使用decimal来存储,decimal在mysql中是以字符串存储的,用于定义货币等对精度要求比较高的书。在数据迁移中,float(M,D)是非标准SQL定义,数据库迁移可能会出现问题,最好不要这样使用,浮点数在计算的时候容易出现问题,在进行数值比较时,最好使用decimal类型
3、日期和时间类型
如果只需要记录年份,则使用year类型即可。如果只记录时间,只需要使用time类型即可
如果同时需要记录时间和日期,则可以使用TIMESTAMP或者DATETIME类型,TIMESTAMP的取值范围小于DATETIME取值范围,因此存储范围较大啊的日期时最好选用DATETIME
TIMESTAMP有一个DATETIME不具备的属性,默认情况下,当插入一条记录并没有指定TIMESTAMP这个列时,mysql会把TIMASTAMP列设为当前的时间,因此当需要插入记录同时插入当前时间时,使用TIMESAMP是方便地。另外TIMESTAMP在空间上比DATETIE更有效
4、char和varchar之间
char是固定长度,varchar是可变长度char会自动补全空格,varchar不会补全。
char是固定长度,因此处理速度比varchar的处理速度快。但是浪费空间,所以对存储不大,但是速度上有要求的额可以使用char类型
存储引擎对于选择char和varchar的影响
对于myISAM存储引擎,最好使用固定长度的数据列代替可变长度的数据列,这样可以使数据检索更快,
对于InnoDB存储引擎,使用可变长度的数据列,因为InnoDB数据表的村塾格式不扥固定长度和可变长度,因此使用char不一定比使用varchar更好,但是由于VARCHAR是按照实际长度存储的,因此空间上更节省
5、ENUM和SET
ENUM只能取单值,它的数据列是一个枚举集合,它的合法取值列表最多允许有65535个成员,在定义性别时可以使用
SET可取多值,最多可以允许有64个成员,比如存储一个人的兴趣爱好
ENUM和SET的值是以字符串的形式出现的,但是在内部,mysql以数值的形式存储
6、BLOB和text
blob是二进制字符串,text是非二进制字符串,两者均可以存放大容量的信息。BLOB主要存储图片,音频信息等。而TEXT主要存储纯文本文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql 存储