一、整数类型(wholenumber)
如果存储整数,可以使用这几种整数类型:TINYINT,SNLLINT,MEDIININT,INT,BIGINTO分别使用8,16,24,32,64位存储空间。它们可以存储的值的范围从 -到 ,其中 N 是存储空间的位数。
MySQL可以为整数类型指定宽度,例如INT(11),对大多数应用,不会限制值的合法范围,只是规定了客户端用来显示字符的个数。对于存储计算来说,INT(1)和INT(11)是相同的。
整数计算一般使用 64 位的 BIGINT 整数,即使32位环境也是如此。
unsigned 表示不允许负数,可以使正数的上限提升一倍。
二、实数类型(realnumber)
实数是带有小数部分的数字。float类型、double类型、decimal类型
MySQL使用 double 作为内部浮点计算的类型。
三、字符串类型
1、varchar类型
varchar类型用于存储可变长字符串。虽然节省了空间,但是在update时可能变得比原来长,InnoDB中可能导致页分裂。合适场景:
- 字符串列的最大长度比平均长度大很多;
- 列的更新很少,所以碎片不是问题;
- 使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。
2、char 类型
char类型是定长的:MySQL总是根据定义的字符串长度分配足够的空间。当存储CHAR值时,MySQL会删除所有的末尾空格。CHAR值会根据需要采用空格进行填充以方便比较。
- char适合存储所有值长度都接近的数据、很短的字符串。
- 对于非常短的列,char 比 varchar 在存储空间上也更有效率,因为 varchar 还有一个记录长度的额外字节。
- 对于经常变更的数据,char 也比 varchar 更好,因为定长的 char 类型不容易产生碎片。
四、日期和时间类型
1、datetime
格式:YYYYMMDDHHMMSS 例:"2019-0101 00:00:00"
范围:1001年 到 9999年
2、timestamp
timestamp显示的值依赖于时区。以1970年1月1日0点作为时间纪元,和 UNIX 时间戳相同。
范围:1970年 到 2038年
五、位数据类型
1、bit类型
2、set类型




