一、选择原则
1.应该尽量使用可以正确存储数据的最小字段类型
2.选用简单的数据类型,例如:一个是尽量用mysql内置的字段类型来存储日期和时间;另一个存储IP地址尽量用整型;能用整型的尽量不用字符串类型
3.尽量避免使用NULL,例如:打算创建索引的字段,不要设置为NULL
二、常用的字段类型的选择说明
1.日期和时间类型
TIMESTAMP与DATETIME都可以存储相同类型的数据,并且精确到秒,可是TIMESTAMP只使用DATETIME一半的存储空间,并且它可以根据时区变化,具有特殊的自动更新能力。
存储空间:TIMESTAMP占用4个字节,DATETIME占用8个字节
mysql> select current_timestamp;+---------------------+
| current_timestamp |
+---------------------+
| 2018-07-21 15:56:39 |
+---------------------+
1 row in set (0.00 sec)
这两个类型存储的数据格式类似:2018-07-21 15:56:39
将这个值转换成时间戳
mysql> select unix_timestamp('2018-07-21 15:56:39');+---------------------------------------+
| unix_timestamp('2018-07-21 15:56:39') |
+---------------------------------------+
| 1532159799 |
+---------------------------------------+
1 row in set (0.00 sec)
将时间戳转换成标准时间
mysql> select from_unixtime('1532159799');+-----------------------------+
| from_unixtime('1532159799') |
+-----------------------------+
| 2018-07-21 15:56:39.000000 |
+-----------------------------+
1 row in set (0.00 sec)
2.整数类型
tinyint(8bit), smallint(16bit), mediumint(24bit), int(32bit), bigint(64bit)
整数计算一般使用64位的bigint整数,一个细节需要注意的地方,INT(1)与INT(20)对于存储和计算来说宽度是相同的,对于INT型字段来说指定宽度是多余的
3.实数类型
浮点类型(float, double)与decimal类型在性能上,浮点类型更好一些,同样范围的值,浮点类型比decimal占用更少的空间