一、数值型
整形:
tinyint 1字节
smallint 2字节
mediumint 3字节
int/intege 4字节
bigint 8字节
可以用unsigned控制是否有正负
可以用zerofill来进行前导零填充
存在bool 类型,其实就是tinyint(1)的别名
create table tb1_int(
a tinyint unsigned,
b tinyint
);
alter table tb1_int add c tinyint(2) zerofill; // 显示宽度必须配上zerofill才能看到效果。
类型(M) ,M是显示最小宽度的意思并不是取值范围。如果插入宽度超过M位,不会有任何影响,会直接显示。
zerofill 是前导零填充。显示位数不足最小宽度的时候会自动添加前导零。
是男是女 可用tinyint(1) 不建议用bool。
小数(浮点数):
单精度:float : 4个字节
双精度:double : 8个字节
123.456 在磁盘上的存储方式: 0.123456 * 10^3
需要保存的是 0.123456 和 3 就是精度,和幂数
create table num_2(
a float,
b double
);
intsert into num_2 values(1234567890.0123456789, 1234567890.0123456789);
select * from num_2;
结果可以看出:
单精度的默认精度为6位左右,双精度默认的精度为16位左右。
小数支持这中写法
Type (M,D)
M表示一共M位
D表示小数占的位数
create table num_3(
a float(5,3),
b double(7,3)
);
insert into num_3 values(0.12345E3,0.1234567E3); // 支持科学计数法的插入,单数受(M,D)的限制。
小数(定点数)
decimal(M,D)
默认值是decimal(10,2),M最大值是65,D最大值是30。
如果存入的定点数小数位数大于2位,会四舍五入。
支持zerofill。支持unsigned,但基本不用。