MySQL 中的数据类型

整数类型

整数类型(whole number) tinyint、smallint、medinuint、int和bigint,分别使用8,16,24,32,64位存储空间。含有可选 unsigned 属性,表示不容许为负数html

实数类型(real number)segmentfault

是带有小数部分的数字,float和double decimal只是一种存储类型函数

关于float 与 double 的区别ui

字符串类型

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来讲,存什么拿到的就是什么。

还有一个区别就是若是存进去的是NULLtimestamp会自动储存当前时间,而datetime会储存NULL

参考地址:https://segmentfault.com/a/11...

char 与 varchar 的区别

  1. char 类型用于存储定长字符串,varchar存储可变长子字符串
  2. varchar 须要1-2个字节存储长度信息
  3. char 在存储的时候会补空格到达指定长度来存储,varchar 则不须要
  4. char 在检索的时候会删除尾部的空格(可增长配置参数 PAD_CHAR_TO_FULL_LENGTH 保留尾缀空格)
  5. char 的存取速度要比 varchar 快,而 varchar 的空间利用率会更高

更多阅读

https://blog.csdn.net/ThinkWo...

参考连接

http://www.javashuo.com/article/p-fuugqcyp-dp.html
https://mp.weixin.qq.com/s/qkfIJwLHCj4b1IqbZk-7IQ

相关文章
相关标签/搜索