0%

mysql数据类型

整型

  • TINYINT 8位
  • SMALLINT 16位
  • MEDIUMINT 24位
  • INT 32位
  • BIGINT 64位

默认情况下,上述类型可以存储的值范围为 -2^(N-1) 到 2^(N-1)-1。
但若类型设置了UNSIGNED属性,则可以使数据的正值增加一倍

注:

当编写 DDL 时,我们发现可以指定 INT 类型的长度。
这个长度只是规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,INT(1)和INT(20)是相同的。

实数

  • FLOAT 4个字节
  • DOUBLE 8个字节
  • DECIMAL : DECIMAL(18,9)小数点两边将各存储9个数字

字符

  • VARCHAR 变长字符

由于行是变长的,在UPDATE时可能使行变得比原来更长,这就导致需要做额外的工作。
如果一个行占用的空间增长,并且在页内没有更多的空间可以存储,在这种情况下,不同的存储引擎的处理方式是不一样的。
例如,MyISAM会将行拆成不同的片段存储,InnoDB则需要分裂页来使行可以放进页内。其他一些存储引擎也许从不在原数据位置更新数据。

  • CHAR 定长字符

大字段

  • TINYTEXT

  • SMALLTEXT

  • TEXT

  • MEDIUMTEXT

  • LONGTEXT

  • TINYBLOB

  • SMALLBLOB

  • BLOB

  • MEDIUMBLOB

  • LONGBLOB

BLOB和TEXT家族之间仅有的不同是: BLOB类型存储的是二进制数据,没有排序规则或字符集; 而TEXT类型有字符集和排序规则。
MySQL对BLOB和TEXT列进行排序与其他类型是不同的: 它只对每个列的最前max_sort_length字节而不是整个字符串做排序。如果只需 要排序前面一小部分字符,则可以减小max_sort_length的配置,或者 使用ORDER BY SUSTRING(column,length)。

日期

  • TIMESTAMP : 从1970年到2038年 精度为秒 (格林尼治标准时间)
  • DATETIME : 从1001年到9999年 精度为秒 时区无关