一、数据类型
MySQL的数据类型有大概可以分为5种,分别是 整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型。
注意:整数类型和浮点数类型可以统称为数值数据类型
数值数据类型
整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
浮点数类型:FLOAT、DOUBLE
定点小数:DECIMAL
日期/时间类型
YEAR、TIME、DATE、DATETIME、TIMESTAMP
字符串类型
CHAR、VARCHAR、TEXT、ENUM、SET
二进制类型
BIT、BINARY、VARBINARY、BLOB
1.整数类型
1个字节= 8位二进制数
2.浮点数和定点数类型
解释M,D的意思:
M:数值的总位数。 通俗点讲,就是看有多少个数字,比如,5.6789,M就是5
D:小数点后面能保留几位。 比如上面的5.6789 ,D就是4。 这只是举一个例子,来说明M,D是什么,实际是先有M,D的,然后在来控制数值,而不是更具数值来确定M,D。
3.日期和时间类型
4.字符串类型
CHAR、CARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET
5.二进制类型
二、如何选择数据类型
1、整数和浮点数
如果不需要小数部分,则使用整数来保存数据,并且根据整数的大小,来选择合适的整数类型,如果需要小数部分,则使用浮点数类型,浮点数类型中,有float和double,如果需要精度高一点,则选择double。
2、浮点数和定点数
浮点数FLOAT、DOUBLE相对应定点数DECIMAL的优势在于:在长度一定的情况下,浮点数能表示更大的数据范围,但是浮点数容易产生误差,因此在精度比较高时,建议使用DECIMAL,比如货币这一类东西,就用DECIMAL比较合理,注意浮点数在进行加减运算时也容易出现问题。如果进行数值比较,也建议用DECIMAL。
3、日期与时间类型
可以看上面详解时的图,根据各种格式,选择自己所需要的数据类型,注意TIMESTAMP和DATETIME的区别,一个是跟时区有关,一个无关,其他没什么大的区别。
4、CHAR与VARCHAR之间的特点与选择
区别:
CHAR是固定长度字符、VARCHAR是可变长度字符。CHAR会自动删除插入数据的尾部空格,VARCHAR不会。
CHAR是固定长度,处理速度比VARCHAR更快,缺点很明显,浪费存储空间,所以对存储不大,但在速度上有要求的可以使用CHAR类型,反之用VARCHAR。
5、ENUM和SET
ENUM只能取单值,也就是从枚举类型中选取其中一个值,但是SET可以取多值,
ENUM最多能存放65535个成员,SET只能65个
空字符串也能在SET中存储,
要存储一个人的喜爱时,最好使用SET类型,其实最重要的是看具体的情况在选取最为合适的。
6、BLOB和TEXT
BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息,BLOB主要存储图片、音频信息,而TEXT只能存储纯文本文件。分清楚两者的用途。
7、BINARY和VARBINARY
这两个的区别和CHAR与VARCHAR的区别差不多,BINARY是固定长度、VARBINARY是可变程度,这两个的作用就是为了区分大小写的,注意这两个是字节字符串。