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
posted @ 2016-08-03 18:44  黄小墨  阅读(328)  评论(0编辑  收藏  举报