1、整数类型
整数类型:TINYIINT(8)、SMALLINT(16)、MEDIUMINT(24)、INT(32)、BIGINT(64)。括号后面分别表示可以存储的位数,他们值的区间范围分别是:-2的(n-1)次方 到 2的(n-1) 次方
整数可控制不为负数,如果你选择属性UNSIGNED属性
给整数类型指定额定宽度没任何意义:因为它不会限制值的合法范围,只规定MySQL的一些交互工具用来显示字符的个数。对于存储和计算来说:INT(1)和INT(20)一样
2、日期和时间类型
除特殊情况之外,通常也应该尽量使用TIMESTAMP,因为它比DATETIME空间效率更高。
DATETIME
--此类型能保存大范围的值,从1001 ~ 9999年,精度为秒。但它与时区无关。使用8个字节的存储空间。
TIMESTAMP
--此类型保存了从1970年1月1日午夜(格林尼治标准时间)以来的秒数。TIMESTAMP只使用4字节的存储空间,因为它的日期范围从1970年到2038年
3、实数类型
实数即是带小数点的数字。MySQL 5.0或更高版本建议使用 DECIMAL,因为MySQL服务器自身实现了DECIMAL的高精度计算
4、字符串类型
VARCHAR
--类型用于存储可变长字符串,它比定长类型更节省空间,因为它仅使用必要空间。
--例外情况:如果MySQL表使用ROW_FORMAT=FIXED创建,每一行都会使用定长存储,这会浪费很多空间;
--下面这些情况使用VARCHAR合适:使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储;
--VARCHAR需使用1或2个额外字节记录字符串的长度
CHAR
--类型是定长的。适合存储很短的字符串,或者所有值都接近同一个长度。
--定长的CHAR不容易产生碎片,对于非常短的列,CHAR比VARCHAR在存储空间上更加有效率。
--例如CHAR(1)来存储只有Y和N的值或定长的密码字段。
--如果采用单字节字符集只需要一个字节,但是VARCHAR(1)却需要两个字节,因为还有一个记录长度的额外字节
--当存储CHAR值时,MySQL会删除所有的末尾空格
5、BLOB 和 TEXT 类型
BLOB
--采用二进制方式存储。
TEXT
--采用字符方式存储。