MySQL基础----常见数据类型及细节

CHAR 与 VARCHAR
CHAR 和 VARCHAR 类型相似,都用来存储字符串,但它们保存和检索的方式不同。
CHAR 属于固定长度的字符类型
VARCHAR属于可变长度的字符类型

由于CHAR是固定长度的,所以它的处理速度比VARCHAR快得多,但也更浪费存储空间。


TEXT与BLOB
(1)BLOB与TEXT都会引起一些性能问题,尤其是执行大量删除操作时。
为了提高性能,可以使用 OPTIMIZE TABLE <table>; 在执行delete操作之后,整理数据库的存储空间。
(2)可以使用合成的(Synthetic)索引来提高大文本字段(BLOB或TEXT)的查询性能。
简单说,其实就是另起一个字段,存储大文本的Hash值,并且为这个Hash值添加索引,在查询大文本的时候,改为查询Hash值的形式。
(3)在不必要的情况,避免查询大型的TEXT 和 BLOB值
(4)把BLOB 或 TEXT 分离到单独的表中,可以减少单次查询传输的数据量,使查询更高效。


浮点数与定点数
当一个浮点数插入值的精确度超过数据库中定义的精确度时,该插入值会被四舍五入,而且不会报错,这个在一些对数据要求高的系统中会容易被忽略。
定点数则不同,实际上定点数是以字符串形式存放,所以可以更精确地保存数据。


日期类型的选择
MySQL提供常用的日期类型有
DATE、TIME、DATETIME、TIMESTAMP,下面简单说一下各自的区别
日期和时间类型 字节 最小值 最大值
DATE 4 1000-01-01 9999-12-31
DATETIME 8 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 4 19700101080001 2038年的某一个时刻
TIME 3 -838:59:59 838::59:59
YEAR 1 1901 2155

下面再简单说一下使用原则
(1)根据实际需要选择能够满足引用的最小存储日期类型。
(2)如果记录年月日时分秒,并且记录时间比较长远,那么优先用DATETIME,因为DATETIME的时间比较长。
(3)如果日期需要不同时区使用,那最好用TIMESTAMP。



猜你喜欢

转载自blog.csdn.net/dwdyoung/article/details/80794408