整数类型(whole number) tinyint、smallint、medinuint、int和bigint,分别使用8,16,24,32,64位存储空间。含有可选 unsigned 属性,表示不容许为负数html
实数类型(real number)segmentfault
是带有小数部分的数字,float和double decimal只是一种存储类型函数
varchar 和 char.net
如何存储在硬盘和内存中与存储引擎有关。 varchar(200)与char(5)存储hello 的开销是同样的,使用 char 会更有优点,更长的列会消耗更多的内存,由于 MySQL 一般会分配固定大小的内存来保存内部值。最好只分配真正须要的空间翻译
BLOB 和 TEXT 类型设计
BLOB 和 TEXT 都是为存储很大的数据而设计的字符串类型,分别采用二进制和字符方式存储code
BLOB 与 TEXT 之间不一样事 BLOB 类型存储的是二进制数据,没有排序规则或字符集。而 TEXT 类型有字符集和排序规则
枚举(ENUM)类型htm
枚举能够把一些不重复的字符串存储成一个预约义的集合。MySQL 存储枚举的值很是进程,会将列表值的数量雅座到一个或两个文件中。MySQL 真正存储的是整数,而不是字符串。blog
在特殊状况下,把 char/varchat 列与枚举列进行关联,可能比 char/varchar 关联要慢
MySQL 能存储的最小时间粒度为秒(可使用微秒级的粒度进行临时运算)
datetime表示范围到9999年,而 timestamp(包括时区) 表示范围到2038年。
timestamp 占用4字节,datetime 占用8字节。timestamp 在时间处理上更方便一些
timestamp
翻译为汉语即"时间戳",它是当前时间到 Unix元年(1970 年 1 月 1 日 0 时 0 分 0 秒)的秒数。对于某些时间的计算,若是是以datetime
的形式会比较困难,假如我是1994-1-20 06:06:06
出生,如今的时间是2016-10-1 20:04:50
,那么要计算我活了多少秒钟用datetime
还须要函数进行转换,可是timestamp
直接相减就行。
timestamp
只占 4 个字节,并且是以utc
的格式储存, 它会自动检索当前时区并进行转换。
datetime
以 8 个字节储存,不会进行时区的检索.
也就是说,对于timestamp
来讲,若是储存时的时区和检索时的时区不同,那么拿出来的数据也不同。对于datetime
来讲,存什么拿到的就是什么。
还有一个区别就是若是存进去的是NULL
,timestamp
会自动储存当前时间,而datetime
会储存NULL
。
参考地址:https://segmentfault.com/a/11...
https://blog.csdn.net/ThinkWo...
http://www.javashuo.com/article/p-fuugqcyp-dp.html
https://mp.weixin.qq.com/s/qkfIJwLHCj4b1IqbZk-7IQ