数值型数据类型主要用来存储数字,包含的类型有:
TINYINT、SMALLINT、MEDIUMINT、 INT(INTEGER)、 BIGINT。
下面通过一个例子来查看各种类型的所占有的数据空间,注意,我使用的版本是MySQL5.6.28,可以通过下面的命令来查看:
创建表tmp1,其中字段x、y、z、m、n数据类型依次为TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,SQL语句如下:
CREATE TABLE tmp1 ( x TINYINT, y SMALLINT, z MEDIUMINT, m INT, n BIGINT );
执行成功之后,便用DESC查看表结构,结果如下:
DESC tmp1;
可以看到,TINGINT占4位(1个字节),SMALLINT占6位,MEDIUMINT占9位,INT占11位,BIGINT占20位
浮点数类型与定点数类型MySQL使用浮点数和定点数来表示小数。包含的类型有:
浮点类型:FLOAT、DOUBLE。
定点类型:DECIMAL。
测试案例:创建表tmp2,其中字段x、y、z数据类型依次为FLOAT(5,1)、DOUBLE(5,1)和DECIMAL(5,1),向表中插入数据5.12、5.15和5.123,SQL语句如下:
CREATE TABLE tmp2 ( x FLOAT(5,1), y DOUBLE(5,1), z DECIMAL(5,1) );
向表中插入数据:
INSERT INTO tmp2 VALUES(5.12, 5.15, 5.123);
可以看到在插入数据时,MySQL给出了一个警告信息,使用SHOW WARNINGS;语句查看警告信息:
SHOW WARNINGS;
说‘z’这一列的数据被截断了,使用下面的SQL语句看看刚刚插入的数据:
SELECT * FROM tmp2;
日期与时间类型MySQL中有多种表示日期的数据类型。它们是:
DATETIME、DATE、TIMESTAMP、TIME和YEAR。
YEAR类型测试案例:创建数据表tmp3,定义数据类型为YEAR的字段y,向表中插入值2010,’2010’,’2166’,SQL语句如下:
首先创建表tmp3:
CREATE TABLE tmp3( y YEAR );
向表中插入数据:
INSERT INTO tmp3 values(2010),('2010');
可以知道,YEAR类型的数据在MySQL中是按照字符串格式存储的。查看一下YEAR类型数据所占用的字节空间:
可以看到,MySQL中YEAR类型的数据占用一个字节的数据空间。
再次向表中插入数据:
INSERT INTO tmp3 values ('2166');
语句执行之后,MySQL给出了一条警告提示,使用SHOW查看错误信息:
SHOW WARNINGS;
可以看到,插入的第3个值2166超过了YEAR类型的取值范围,此时不能正常的执行插入操作,查看结果:
SELECT * FROM tmp3;