一、整数
标准SQL中支持INTEGER和SMALLINT,mysql扩展了TINYINT、MEDIUMINT和BIGINT。
MySQL支持指定数据类型的显示宽度,例如INT(8)指定INT类型的显示宽度为8。
MySQL支持SQL标准中的BOOL和BOOLEAN,但会转换成TINYINT(1)。
二、浮点数和定点数
MySQL使用浮点数FLOAT、DOUBLE和定点数DECIMAL来表示小数。
MySQL支持指定浮点数和定点数的精度和标度,精度指数据的总长度,标度指小数点后的长度。例如DECIMAL(M,D)指定精度为M,标度为D。
DECIMAL的存储空间是根据其精度决定的,若未指定则默认为10位整数。
三、日期和时间
YEAR、DATE、TIME、DATETIME和TIMESTAMP表示日期和时间。
除TIMESTAMP外使用CURRENT_TIME或NOW()获取当前系统时间,TIMESTAMP则使用CURRENT_TIMESTAMP、NULL或不指定值来获取当前系统时间。
四、字符串
CHAR和VARCHAR类型均在创建时指定最大长度,例如CHAR(32)指定了该字符串的最大长度为32。VARCHAR可在最大长度内动态分配空间。
TEXT只能保存字符数据,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
ENUM和SET是预定义的字符串列表,其中ENUM列表中的字符串会按声明顺序编号。ENUM只能从列表中选择单值,SET可选择多值。
五、二进制
BINARY和BARBINARY类型均在创建时指定最大长度,例如BINARY(32)指定了该二进制数的最大长度为32。VARBINARY可在最大长度内动态分配空间。
BIT类型也在创建时指定最大长度,但不同的是BIT支持的最大长度为64。
BLOB、TINYBLOB、MEDIUMBLOB和LONGBLOB类型用于保存数据量很大的二进制数据,例如图片等。