【MySQL】近2万字,138张图解,我终于把mysql总结完整了,建议收藏(12)


现在我们把 test2 表中的精度全部去掉 , 再次插入
alter table test2 modify aId float;

alter table test2 modify bId double;

alter table test2 modify cId decimal;

先查询一下 , 发现 cId 舍去了小数位 。
然后再次插入 1.23 , SQL 语句如下
insert into test2 values(1.231.231.23);

结果如下
这个时候可以验证

  • 浮点数如果不写精度和标度 , 会按照实际的精度值进行显示
  • 定点数如果不写精度和标度 , 会按照 decimal(100) 来进行操作 , 如果数据超过了精度和标题 , MySQL 会报错
位类型对于位类型 , 用于存放字段值 , BIT(M) 可以用来存放多位二进制数 , M 的范围是 1 - 64 , 如果不写的话默认为 1 位 。
下面我们来掩饰一下位类型
新建一个 test3 表 , 表中只有一个位类型的字段
create table test3(id bit(1));

然后随意插入一条数据
insert into test3 values(1);

发现无法查询出对应结果 。
然后我们使用 hex() 和 bin() 函数进行查询
发现能够查询出对应结果 。
也就是说当数据插入 test3 时 , 会首先把数据转换成为二进制数 , 如果位数允许 , 则将成功插入;如果位数小于实际定义的位数 , 则插入失败 。 如果我们像表中插入数据 2
insert into test3 values(2);

那么会报错
因为 2 的二进制数表示是 10 , 而表中定义的是 bit(1)  , 所以无法插入 。
那么我们将表字段修改一下
然后再进行插入 , 发现已经能够插入了
日期时间类型MySQL 中的日期与时间类型 , 主要包括:「YEAR、TIME、DATE、DATETIME、TIMESTAMP」 , 每个版本可能不同 。 下表中列出了这几种类型的属性 。
下面分别来介绍一下
YEARYEAR 可以使用三种方式来表示
  • 用 4 位的数字或者字符串表示 , 两者效果相同 , 表示范围 1901 - 2155 , 插入超出范围的数据会报错 。
  • 以 2 位字符串格式表示 , 范围为 ‘00’~‘99’ 。 ‘00’~‘69’ 表示 2000~2069 , ‘70’~‘99’ 表示1970~1999 。 ‘0’ 和 ‘00’ 都会被识别为 2000 , 超出范围的数据也会被识别为 2000 。
  • 以 2 位数字格式表示 , 范围为 1~99 。 1~69 表示 2001~2069 70~99 表示 1970~1999 。 但 0 值会被识别为0000 , 这和 2 位字符串被识别为 2000 有所不同
下面我们来演示一下 YEAR 的用法 , 创建一个 test4 表
create table test4(id year);

然后我们看一下 test4 的表结构
默认创建的 year 就是 4 位 , 下面我们向 test4 中插入数据
insert into test4 values(2020)('2020');

然后进行查询 , 发现表示形式是一样的
使用两位字符串来表示
delete from test4;

insert into test4 values ('0')('00')('11')('88')('20')('21');

使用两位数字来表示
delete from test4;

insert into test4 values (0)(00)(11)(88)(20)(21);

发现只有前两项不一样 。
TIMETIME 所表示的范围和我们预想的不一样
我们把 test4 改为 TIME 类型 , 下面是 TIME 的示例
alter table test4 modify id TIME;

insert into test4 values ('15:11:23')('20:13')('2 11:11')('3 05')('33');

结果如下
DATEDATE 表示的类型有很多种 , 下面是 DATE 的几个示例
create table test5 (id date);