MySQL支持很多数据类型,以便我们能在复杂的业务场景中支持各种各样的数据格式,存储适当的数据内容。我们在设计数据库时,正确的使用数据库类型对整个数据库的整洁和高效,会有很大的帮助。
目前常用的数据类型大致上可以分为4大类:整数类型、浮点数类型、字符串(字符)类型、日期/时间类型。详细如下
4大类 主要类型整数类型 tinyint 、 smallint 、 mediumint 、 int 、 bigint
浮点数类型
float 、 double 、 decimal字符串(字符)类型 char 、 varchar 、 tinyblob 、 blob 、 mediumblob 、 longblob 、tinytext 、 text 、 mediumtext 、 longtext
日期/时间类型 Date 、 DateTime 、 TimeStamp 、 Time 、 Year
数值类型
MySQL支持所有标准SQL数值数据类型,包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),还有近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION),所以MySQL中数据类型是丰富且完整的。
而作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。在下面的表格中,我们总结了5个整数类型的存储大小和取值范围。
类型 字节数 有符号值范围 无符号值范围 作用TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
我们创建表赋予的类型默认是有符号类型的,无符号的需要在类型需要后面跟上unsigned 标记,上面的数据范围是根据字节对应二进制换算,比如一个字节转化为十进制最大为255(11111111),最小为0(00000000),具体可以去查下二进制表示相关资料。
测试一下:
1 mysql> create table tinyintdemo( 2 tiny TINYINT, 3 tinyunsi TINYINT UNSIGNED 4 ); 5 Query OK, 0 rows affected 6 7 mysql> insert into tinyintdemo values(-128,-128); 8 1264 - Out of range value for column 'tinyunsi' at row 1 9 mysql> insert into tinyintdemo values(-128,0); 10 Query OK, 1 row affected 11 12 mysql> insert into tinyintdemo values(255,255); 13 1264 - Out of range value for column 'tiny' at row 1 14 mysql> insert into tinyintdemo values(127,255); 15 Query OK, 1 row affected