数据类型
数值类型:tinyint、smallint、mediumint、int、bigint、float、double、decimal
日期时间类型:year、time、datetime、date、timestamp
字符串类型:char、varchar、binary、varbinary、blob、text、enum、set
显示宽度
显示宽度只用于显示,tinyint(4)的显示宽度为4,占用1个字节的存储空间,取值范围为:-128~127。
当设置zerofill时,显示宽度用于格式化数据。例如:
create table t_test (iorder tinyint(4) zerofill); insert into t_test(iorder) values(1),(111); select iorder from t_test;
结果为:0001,0111。
整数
tinyint(1字节)、smallint(2字节)、mediumint(3字节)、int(4字节)、bigint(8字节)
浮点数和定点数
float(4字节)、double(8字节)、decimal(精度+2字节)
定点数以字符串形式存储,精度要求高时,使用定点数,例如:货币。浮点数在加减、比较运算时容易出问题。在长度一定时,浮点数能表示更大的数据范围。
日期时间
year(1字节)、time(3字节)、date(3字节)、datetime(8字节)、timestamp(4字节)
char & varchar
MyIASM引擎使用char可使表静态化,效率更高;InnoDB使用varchar比较节省空间,更合适。
Blob & text
Blob存储二进制字符串,text存放非二进制字符串。Blob适用图片、音频,text适用纯文本。