mysql如何选择数据类型
1. 整数和浮点数
这个很容易区分,不需要小数时就选择整数,否则浮点数
浮点数包括float 和 double 类型
2. 浮点数和定点数
浮点数相对于定点数decimal来说,在一定长度浮点数能表示的数据范围更大
因为浮点数容易产生误差,所以精确度要求比较高时可以用decimal来存储
另外2个浮点数进行比较或者减法运算也容易出现问题,如果进行数值比较可以用decimal类型
3. 日期与时间类型
只记录年份,使用year类型即可
只记录时间,使用time类型即可
同时想要记录日期和时间,可以用timestamp或者datetime类型
datetime类型取值范围是’1000-01-01 00:00:00’ ~ ‘9999-12-3 23:59:59’
timestamp类型取值范围是’1970-01-01 00:00:01’ ~ ‘2038-01-19 03:14:07’
可以根据实际需要取值范围选择
4. char和varchar之间的特点和选择
char 是固定长度字符, varchar是可变长度字符
char 会自动删除插入数据的尾部空格,长度固定嘛,varchar 不会
mysql> create table tmp17(k char(4));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into tmp17 values('');
Query OK, 1 row affected (0.01 sec)
mysql> select * from tmp17;
+------+
| k |
+------+
| |
+------+
1 row in set (0.00 sec)
mysql> select k,k='0000' from tmp17;
+------+----------+
| k | k='0000' |
+------+----------+
| | 0 |
+------+----------+
1 row in set (0.00 sec)
mysql> select k,k='\0\0\0\0' from tmp17;
+------+--------------+
| k | k='\0\0\0\0' |
+------+--------------+
| | 1 |
+------+--------------+
1 row in set (0.00 sec)
char 是固定长度,处理速度快,缺点是浪费存储空间, varchar反之
存储引擎对于选择char 和 varchar 的影响:
myisam存储引擎,最好用char,数据检索快
innodb存储引擎,最好用varchar,因为innodb数据表的存储格式不分固定长度喝可变长度,用varchar这样可以节省空间,从而磁盘I\O次数也会减少
5. enum和set
enum只能单选,比如性别是男还是女
set支持多选,比如兴趣爱好
6. blob和text
blob是二进制字符串,text是非二进制字符串,两者均可存放大容量的信息
blob主要存储图片、音频信息等
text只能存储纯文本文件