4 数据类型
4.1 数据类型分类
MySQL中定义数据字段的类型对于数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为以下五类:
- 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
- 小数类型:FLOAT、DOUBLE、DECIMAL
- 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
- 日期和时间类型:Date、Time、Year、DateTime、TimeStamp
- 其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等
4.2 整数类型
类型 | 大小 | 范围(有符号) | 范围(无符号) |
---|---|---|---|
TINYINT | 1字节 | (-27,27-1) | (0,28-1) |
SMALLINT | 2字节 | (-215,215-1) | (0,216-1) |
MEDIUNINT | 3字节 | (-223,223-1) | (0,224-1) |
INT | 4 | (-231,231-1) | (0,232-1) |
BIGINT | 8 | (-263,263-1) | (0,264-1) |
4.2.1 TINYINT类型
有符号类型越界测试:
create table tt1(num tinyint);
insert into tt1 values(1);
insert into tt1 values(128);
– 发生越界,这一句会报错
说明:
- MySQL中整型可以是有符号的也可以是无符号的,默认是有符号的;
- 可以通过UNSIGNED来指定某个字段是无符号的。
无符号类型:
create table tt2(num tinyint unsigned);
insert into tt2 values(255);
insert into tt2 values(-1);
– 无符号类型,范围是(0,255)
其他类型不在一一演示。