整数
整数有 TINYINT, SMALLINT, MEDIUMINT, INT 和 BIGINT 类型。
占用 8 , 16 24, 32, 64 bit。
为整数指定长度没有意义,如 INT(11) ,它能存储的还是 32 位数据。
实数
DECIMAL 运算没有精度丢失。
FLOAT,DOUBLE 运算有精度丢失。
DECIMAL 可以存储准确的小数和整数位,如 DECIMAL(18,9)
由于 DECIMAL 在空间占用上比较多,并且运算复杂,一般只用来存储不允许精度丢失,并且要得到准确的小数位数的场合,比如说金融数据。
String 类型
1. VCHAR 类型和 CHAR 类型
VARCHAR 用来存储变长的字符数据,并且需要额外的一到两个字节来存储字符数据的长度。
VARCHAR 一般用来存储 5000 字符以下的数据。
CHAR 用来存储定长的字符数据。适用于列的长度都非常短或者存储数据的长度近似一致的场合。如 MD5,存储 Y,N 数据。
2. BLOB 和 TEXT 类型
BLOB 和 TEXT 用在存储大量数据(包括二进制和字符型)的场合。
两者的区别在于,BLOB 存储的是二进制数据,而 TEXT 存储的是字符数据
TEXT 一般用来存储 5000 字符以上的数据,对于这样的数据,应该单独独立出一张表,用 id 对应,以免影响母表的索引效率。
3. 在一些场合,可以使用 enum 来代替 STRING 类型
DATE 和 TIME 类型
DATE 的精度是秒,格式是 YYYYMMDDHHMMSS,和时区无关。
存储范围: 1001-9999
TIMESTAMP 的精度是S,存储的是从1970.1.1 零点到当前过去的秒数。依赖于时区。