1.常用的数据类型
#1.数字型
整数型
重要: tinyint , int(数据类型不同,其所表示的范围也就不同)
tinyint 1字节
int 4字节
在计算机中,数据都是以二进制的形式进行存储,1个字节(byte)占用8位(bit)
0=>0000 0000
1=>0000 0001
2^8 可以表示256个数字
tinyint可以表示的范围: 0~255
在计算机中,数字又分正负,0表示正,1表示负
0 000 0001 +1 2^7 表示128个数 0~127
1 000 0001 -1 2^7 表示128个数 -128 ~ -1
有符号的情况下:
tinyint表示范围: -128 ~ 127
无符号的情况下:
tinyint表示范围: 0 ~ 255
int 的取值范围: -21亿 ~ 21亿 / 0 ~ 42亿
4个字节
2^32
unsigned 无符号
例:
create table `student1`(
`id` int unsigned,
`name` varchar(20),
`socre` tinyint unsigned
)engine=innodb charset=utf8 comment='学生表1';
insert into `student1` values(0,'张飞',0); # 成功
insert into `student1` values(4294967295,'张飞',0);# 成功
insert into `student1` values(4294967295,'张飞',255);# 成功
insert into `student1` values(4294967296,'张飞',255);# 失败
insert into `student1` values(-1,'张飞',255);# 失败
insert into `student1` values(1,'张飞',256); # 失败
insert into `student1` values(1,'张飞',-1); # 失败
小数型
浮点数: float,double 会有精度丢失
定点数: decimal 不会有精度丢失,通常用来表示货币
数据类型(M,D)
M:总长度
D:小数位长度
decimal(5,2)
例:
create table `student2`(
`id` int unsigned,
`name` varchar(20),
`socre` tinyint unsigned,
`hight` decimal(3,2)
)engine=innodb charset=utf8 comment='学生表2';
insert into `student2` values(1,'关羽',100,1.85); # 成功
insert into `student2` values(1,'关羽',100,10.1); # 失败
insert into `student2` values(1,'关羽',100,2.999); # 成功,3.00
insert into `student2` values(1,'关羽',100,2.125); # 成功 2.13
#2.字符型
char(M) 定长字符串
varchar(M)