mysql数据类型分析
CHAR, VARCHAR, TEXT
- CHAR 定长字符串,占用空间大,速度快
- VARCHAR 变长字符串,占用空间小,速度慢
- CHAR后面的空格会被去掉,VARCHAR不会去掉
- TEXT 不能有默认值
- 数据检索的效率 CHAR > VARCHAR > TEXT
ENUM()
- 枚举的每一个元素都有一个序号
- 自动去掉元素后面的空格
- 插入数据时value必须是枚举中的一个,除了NULL
- 只能从列表中选取一个值
SET()
- 可以从列表中选取多个值,多个值之间用逗号分隔
- 以二进制数值保存在表中
YEAR:
- 保存年份 1901-2155
- 可以保存数值形式,也可以保存这符串形式
- 当输入两位数字或两位字符串的时候会自动在前面加20或19
- 当插入一个数字0时,保存为0000
- 当插入一个字符串0时,保存为2000
TIME:
- 由天数:小时:分钟:秒组成
- INSERT tablename VALUES(‘1 12:12:12’); 存成 36:12:12
- INSERT tablename VALUES(‘11:11’); 存成11:11:00
- INSERT tablename VALUES(‘1234’); 存成00:12:34
- INSERT tablename VALUES(‘12’); 存成00:00:12
- INSERT tablename VALUES(‘0’); 存成00:00:00
DATE:
- 1000-0101 ~ 9999-12-31
- INSERT tablename VALUES(‘12-6-7’); 2012-06-07
- INSERT tablename VALUES(‘12/6/7’); 2012-06-07
- INSERT tablename VALUES(‘120607’); 2012-06-07
- INSERT tablename VALUES(‘12@6/7’); 2012-06-07
- 一般时间用整型保存时间戳
浮点类型:
- 当插入数据小数位太多时,float, double 会自动四舍五入; DECIMAL会产生一个warning.
- DECIMAL内部以字符串形式保存
- 当数值以字符串形式插入时,float, double保存结果可能不对, 但DECIMAL不会错
- 精度要求高时,应当使用DECIMAL