参考菜鸟教程 https://www.runoob.com/mysql/mysql-data-types.html
数据类型的选择
在数据类型的选择上,保存字符串数据通常都使用 VARCHAR
和 CHAR
两种类型,前者通常称为变长字符串,而后者通常称为定长字符串;对于InnoDB存储引擎,行存储格式没有区分固定长度和可变长度列,因此 VARCHAR
类型好 CHAR
类型没有本质区别,后者不一定比前者性能更好。如果要保存的很大字符串,可以使用 TEXT
类型;如果要保存很大的字节串,可以使用 BLOB
(二进制大对象)类型。在MySQL中,TEXT和BLOB又分别包括TEXT、MEDIUMTEXT、LONGTEXT和BLOB、MEDIUMBLOB、LONGBLOB三种不同的类型,它们主要的区别在于存储数据的最大大小不同。保存浮点数可以用 FLOAT
或 DOUBLE
类型,而保存定点数应该使用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而不是负数