【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 会报错
下面我们来掩饰一下位类型
新建一个 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 有所不同
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);
- 产业气象站|“不敢自诩为MySql专家,岂能错过这本神书”,MySql领域经典之作
- 「MySQL」很多人在安装数据库时,都遇到过这个问题
- Java架构师Saber|90%MySQL问题全解,技术老兵十年专攻MySQL:编写了763页核心总结
- 中国IDC圈|具备自动扩容等超高性能,华为云MySQL混合SSD盘实例发布
- MySQL@中国首富又换人! 新首富比马云多283亿, 拼多多创始人成第三
- #MySQL#RabbitMQ 的使用场景,安装,爬坑必备。