mysql中数据库字段类型详解
1,blob字段
mysql中blob是一个二进制大型对象,是一个可以储存大量数据的容器,它能容纳不同大小的数据。
mysql中blob的四种类型除了存储数据的大小有区别,其它都一样。
需注意:如果存储的文件过大,数据库性能也会下降很多。
mysql中的四种BLOB类型:
类型 大小(单位:字节)
TinyBlob 最大255
Blob 最大65K
MediumBlob 最大16M
LongBlob 最大4G
2,时间字段
日期类型
Date 格式
YYYY-MM-DD 支持范围为1000-01-01 到9999-12-31 并允许字符串或者数字为此列赋值
update sys_table set str_date = 12331212 where id = "11";
update sys_table set str_date= 1233-12-12 where id = "11"
DateTime格式
YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS
支持范围为1000-01-01 00:00:00到9999-12-31 23:59:59 并允许字符串或者数字为此列赋值。
默认值为null,不会自动更新,可设置 default current_timestamp 新增时默认为当前时间
update sys_table set str_date = 12331212121212 where id = "11"
update sys_table set str_date= 1233-12-12 12:12:12 where id = "11"
*TimeStamp格式*
YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS
这是时间戳 ,从1970-01-01 00:00:00到2038-01-19 03:14:07,
输出的时间为 Thu Jan 01 08:00:00 CST 1970 即utc格式(格林威治标准时间-世界标准时间即存储时会把当前时区的转化为utc存储,查询时又转化为当前时区输出),北京时间东八区和它相差8小时,再存储时会减8小时,所以用mybatis 读取时要自动加8小时
由上可知对于跨时区的业务,timestamp比较适合
设置的时间得大于1970年
默认值 not null 默认时间为当前时间
update sys_table set str_date = 20081212121212 where id = "11";
*关于两者的自动初始化和自动更新*
create table test_mm
(
id int(1) default null,
hiredate timestamp not nul default current_timestamp on update current_timestamp,
hirrrrr datetime not nul default current_timestamp on update current_timestamp
)
在mysql5.6.5 以后,只要新建表时时间字段如上边这样设计,则
自动初始化-没有给该值赋值,会自动填充当前时间
自动更新--修改表中任何一个字段,会自动填充当前时间
mysql 中表示当前时间的字段:
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()
NOW()
LOCALTIME
LOCALTIME()
LOCALTIMESTAMP
LOCALTIMESTAMP()
以上字段都一样的意思