参考菜鸟教程 https://www.runoob.com/mysql/mysql-data-types.html

数据类型的选择

在数据类型的选择上,保存字符串数据通常都使用 VARCHARCHAR 两种类型,前者通常称为变长字符串,而后者通常称为定长字符串;对于InnoDB存储引擎,行存储格式没有区分固定长度和可变长度列,因此 VARCHAR 类型好 CHAR 类型没有本质区别,后者不一定比前者性能更好。如果要保存的很大字符串,可以使用 TEXT 类型;如果要保存很大的字节串,可以使用 BLOB (二进制大对象)类型。在MySQL中,TEXT和BLOB又分别包括TEXT、MEDIUMTEXT、LONGTEXT和BLOB、MEDIUMBLOB、LONGBLOB三种不同的类型,它们主要的区别在于存储数据的最大大小不同。保存浮点数可以用 FLOATDOUBLE 类型,而保存定点数应该使用DECIMAL类型。如果要保存时间日期DATETIME 类型优于 TIMESTAMP 类型,因为前者能表示的时间日期范围更大

char和varchar的区别

对比char(20)和varchar(20),二者本质都是char,但varchar是可变长的字符串,是根据实际存储的字符串内容来分配存储空间的,就相当于是C语言中的动态分配内存;而char则是定长的,char(20)的存储空间就固定为20个字符的内存空间。

时间相关数据类型

一般直接使用 DATETIME 类型即可,格式为“YYYY-MM-DD HH:MM:SS”,比如“1000-01-01 00:00:00”
使用嵌入式语言(Python, C++ …)从数据库中获得的 DATETIME 类型的数据类型为字符串类型

int unsigned类型

在MySQL中,INT UNSIGNED与C语言中UNSIGNED类型一致,表示范围为 0 ~ 4294967295
一般我们希望id字段为非负数并且 auto_increment 的时候会考虑使用,但如果一个很大的数加1可能会造成回到0而不是负数