Char和varchar
Char是固定长度字符类型
Varchar是可变长度的字符类型
Char类型在存储数据时,会自动去除尾部空格;前面空格会保留;
Varchar 类型会保留前后空格;
例如:INSERT into dev_learn_type VALUES(222,22,' abdc ',' abdc ','');
Char的长度是固定的,所以处理速度比varchar要快;
Text和blob
Text 和blob第一个 主要区别就是blob是二进制安全的,也就是可以保存图片等;
Text只能保存字符数据;
Text又分 text ,mediumtext,longtext ;一般选择可以满足需求的最小的存储类型;有利于性能优化;
Text和blob 在大量删除内容时,会使存储的物理文件产生‘空洞’,这些空洞 在插入记录时,效率会受到影响。可以使用 OPTIMIZE TABLE 表名;进行处理;
浮点数与定点数:
Mysql的 float 。double。real 用来表示浮点数;
浮点数在插入数据的精度超过定义的实际精度时会四舍五入;
Mysql decimal。Numberic.表示定点数:
定点数在 如果超过定义的精确度,在mysql的默认的sqlmodel下会四舍五入插入;
Mysql的TRADITIONAL 传统模式下,会插入失败,报错;
精度要求较高的情况下 一般选用 定点数;
日期类型的选择:
日期类型根据需要选择可以满足的占用最小存储的类型,这样可以提高操作表的效率;例如只需精确到年,这选择year类型;
记录的年份比较久远,需要选择datetime,因为timestamp 记录范围小:
如果需要满足不同时区的用户使用,需要选择timestamp类型,因为 timestamp 类型 和时区 是有关的;会根据时区的不同 自动计算当前时区对应的日期;
mysql总共有5种日期时间类型:
类型 字节 最小值 最大值
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-01-19 11:14:07
TIME 3 -838:59:59 838:59:59
YEAR 1 1901 2155