mysql中光整数型数据类型就有五种:tinyint,smallint,mediumint,int,bigint
tinyint:迷你整型,占用1个字节保存数据,能够表示256个数值
smallint:小整型,占用2个字节保存数据,能够表示65536个数值
mediumint:中整型,占用3个字节保存数据
int:标准整型,占用4个字节保存数据,42亿多
bigint:大整型,占用8个字节保存数据
类型 | 字节 | 最小值(有符号/无符号) | 最大值(有符号/无符号) |
---|---|---|---|
TINYINT | 1 | -128/0 | 127/255 |
SMALLINT | 2 | -32768/0 | 32767/65535 |
MEDIUMINT | 3 | -8388608/0 | 8388607/16777215 |
INT/INTEGE | 4 | -2147483648/0 | 2147483647 /4294967295 |
BIGINT | 8 | -9223372036854775808/0 | 9223372036854775807/18446744073709551615 |
为什么要有这么多整型?
1. 能够最大效率的使用磁盘空间,做到最少浪费。根据实际业务分配内存空间来进行数据保存。
2. 查询的效率变高。
如何在项目中选择使用何种整型?
根据业务需求,某一类数据的边界值,看边界值落在那个整型的范围,就是用最小的那个。
在实际操作中tinyint,int使用的较多
整型表案例
默认的,整型都是有符号类型
无符号:表示数值只能是正的,不能有负数
语法:在字段类型后面使用unsigned进行标识
age tinyint unsigned;//年龄是一个迷你整型,无符号表示(0-255)
显示宽度:占的位数,当某个数值没有达到显示宽度的时候,在数值的左边使用0来补足显示宽度(不能改变数值本身大小)
-- int类型测试
create table test_int(
`tinyint` tinyint,
`smallint` smallint,
`mediumint` mediumint,
`int` int,
`bigint` bigint
)charset utf8;
insert into test_int values(1,2,3,4,5); -- 没有问题
insert into test_int values(256,256,256,256,256); -- 不能插入,tinyint超出范围
insert into test_int values(-100,-200,-300,-400,-500); -- 正常,默认是有符号
-- 增加无符号字段类型
alter table test_int add age tinyint unsigned; -- 无符号的迷你整型
-- 更新表字段数据
update test_int set age = -1;-- 错误,因为age是无符号,只能从0开始
update test_int set age = 250;-- 正确