MySQL数据类型
为每张表的每个字段选择合适的数据类型是数据库设计过程中一个重要的步骤。
(1) 数字类型
数字分为整数和小数。
其中整数用整数类型表示,小数用浮点数类型和定点数类型表示。
浮点数类型包括单精度浮点数FLOAT类型和双精度浮点数DOUBLE类型。
注意事项:定点数类型就是DECIMAL类型,DEC和DECIMAL这两个定点数类型是同名词
数字类型的选择应遵循如下原则:
1)选择最小的可用类型,如果改字段的值不会超过127,则使用TINYINT比INT效果好。
2)对于完全都是数字的,即无小数点时,可以选择整数类型,比如年龄。
3)浮点类型用于可能具有的小数部分的数,比如学生成绩。
4)在需要表示金额等货币类型时优先选择DECIMAL数据类型。
(2) 日期时间类型
MySQL主要支持5种日期类型:DATE、TIME, YEAR、DATATIME和TIMESTAMP。
(3) 字符串类型
字符串类型的数据分为普通的文本字符串类型(CHAR和VARCHAR)、可变类型(TEXT和BLOB)和特殊类型(SET和ENUM)。
(4) 复合类型
MySQL数据库还支持两种复合数据类型ENUM和SET,它们扩展了SQL规范。
Enum类型的字段只允许从一个集合中取得某一个值,有点儿类似于单选按钮的功能。例如,一个人的性别从集合{‘男’,‘女’}中取值,且只能取其中一个值。
Set类型的字段允许从一个集合中取得多个值,有点儿类似于复选框的功能。例如,一个人的兴趣爱好可以从集合{‘看电影’,‘购物’,‘听音乐’, ‘旅游’,‘游泳}中取值,且可以取多个值。
(5) 二进制类型
MySQL主要支持7种二进制类型:binary、varbinary、bit、tinyblob、blob、mediumblob和longblob。
注:Text与blob都可以用来存储长字符串,text主要用来存储文本字符串,例如新闻內容、博客日志等数据;blob主要用来存储二进制数据,例如图片、音频、视频等二进制数据。
(6) 合适的数据类型选择原则
通常来说,数据类型的选择遵循以下原则。
1)在符合应用要求(取值范围、精度)的前提下,尽量使用“短”数据类型。
2)数据类型越简单越好。
3)尽量采用精确小数类型(例如decimal),而不采用浮点数类型。
4)在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储日期和时间。
5)尽量避免NULL字段,建议将字段指定为NOT NULL约束。