MySQL的数据类型以及int(11)的理解
在MySQL中,⼤致可以分成如下⼏种类型:
1.数值型
(1)整型
数据类型占的字节数有符号范围
tinyint(m)1个字节范围(-128~127)
smallint(m)2个字节范围(-32768~32767)
mediumint(m)3个字节范围(-8388608~8388607)
int(m)4个字节范围(-2147483648~2147483647)
bigint(m)8个字节范围(+-9.22*10的18次⽅)
注意:
1.取值范围如果加了unsigned,则最⼤值翻倍,如tinyint unsigned的取值范围为(0~256)。
2.int(m)⾥的m是表⽰SELECT查询结果集中的显⽰宽度,并不影响实际的取值范围,没有影响到显⽰的宽度,个⼈觉得加m没⽤
3.如果向数据库中加范围以外的值是加不进去的,会报错误
(2)浮点型
数据类型占的字节数有效位数
float(m,d)4字节8位
double(m,d)8字节16位
其中:
m=整数位数+⼩数位数
d=⼩数位数
设⼀个字段定义为float(5,2),如果插⼊⼀个123.456,数据库只会存123.46;不可以插⼊整数位⼤于3(即5-2)的数字。(3)定点型
数据类型字节数
decimal(m,d)m+2
浮点型在数据库中存放的是近似值,⽽定点类型在数据库中存放的是精确值。
其中:
m<65,d<30;
2.字符型
字符型包括:char,vchar,text,blob等;
类型长度最多字符
char(n)固定长度最多255字符
vchar(n)可变长度最多65535字符
text可变长度最多65535字符
blob可变长度适合存照⽚
注意:对于name char(3),如果你插⼊’abcd’,会报错误(ERROR 1406 (22001): Data too long for column ‘name’ at row
1),⽽且不能插⼊数据库.对于⽹上有⼈说,超过你设定的长度会被截断,但是我测试的时候发现,超过设定长度根本不能存下,所以请以当前
环境为准.
3.⽇期和时间类型
数据类型占的字节数含义格式
date3字节⽇期2017-01-01
time3字节时间10:38:10 datetime8字节时间⽇期2017-01-01 10:38:10 year1字节年2017
例⼦:
insert into test(date) values(“20170101”);
或者:insert into test(date) values(“2017-01-01”);
注意:
时间戳(timestamp)系统会⾃动添加当前时间,格式和datetime⼀样。
关于int(11)的理解:
例如:ID int(m);
在 integer 数据类型中,m 表⽰最⼤显⽰宽度。
decimal是整数数据类型在 int(m) 中,m 的值跟 int(m) 所占多少存储空间⽆任何关系。 int(3)、int(4)、int(8) 在磁盘上都是占⽤ 4 btyes 的存储空间。唯⼀的不同就是显⽰给⽤户的⽅式不同(还要结合zerofill 才能看到)。
结论:
在创建表时,完全不需要写成ID int(m),写成ID int即可,除⾮对显⽰有特定的要求。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论