首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL基础学习之大战时间及定点类型

MySQL基础学习之大战时间及定点类型

作者头像
小Bob来啦
发布2020-12-08 15:13:30
发布2020-12-08 15:13:30
4940
举报

关于SQL的列类型学习小编上次只讲到了整型以及浮点数,也只占小部分,后面还会有时间日期,定点型(今天要提到的),文本字符串,枚举和集合啥的,当然主要的也是这几种。这还算是比较基础的,后面难度是会增加的哦。

关于学SQL语言,小编认为是进大厂所必须掌握的,当然是指相应的开发岗位,毕竟大型APP都会使用到某种相应的数据库来存储数据。

列类型:定点型

定点型:绝对保证整数部分不会被四舍五入(即不会丢失精度),小数部分可能会(理论上是不会的)。

创建定点数表(同时以浮点数表做对比),当然,每次进MySQL之后需要进入到相应的database中才能执行下列操作哦(进database语句:use (你的数据库名字);)

创建定点类型表:

代码语言:javascript
复制
create table my_decimal(
fi float (10,2),
di decimal (10,2)
)charset utf8;

分别执行如下:

插入数据:定点数的整数部分一定不能超出长度,小数部分的长度可以随意超出。

To:整数部分超出长度后进位也是不可以的哦,小数部分倒是可以随意超出,毕竟系统会自动进行四舍五入。浮点数如果进位导致长度溢出没有问题,但是定点数不行。

下面语句在执行时若有报错,可使用查看报错的语句:show warnings;

插入数据相应语句:

代码语言:javascript
复制
-- 插入数据
insert into my_decimal values(12345678.90,12345678.90); -- 有效数据
insert into my_decimal values(1234.123456,1234.1234567);  -- 小数部分超出
insert into my_decimal values (12345678.99,12345678.99);  -- 不会报错
insert into my_decimal values (12345678.99,12345678.999);  -- 进位超出

查看报错:

分别执行效果如下:

列类型:时间日期型

Datetime(时间日期):格式是YYYY-mm-dd HH:ii:ss(表示的范围是从1000年到9999年,存在零值全为0,即为0000-00-00 00:00:00)。

Date(日期):是datetime中的date部分。

Time(时间段):指定的某个区间之间,比如从某个时间到某个时间。

Timestamp(时间戳):但也不完全是时间戳,只是从1970年开始的YYYY-mm-dd HH:ii:ss 格式与Datetime完全一致。

相关时间类型:

创建时间日期表语句:

代码语言:javascript
复制
-- 创建时间日期表
create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;

创建相关表的执行窗口就不用放了哈~

插入数据:时间time可以是负数,而且可以是很大的负数,year可以是使用两位数插入,也可以使用四位数插入。

插入数据相应语句:

代码语言:javascript
复制
-- 插入数据
insert into my_date values ('2020-10-27 12:00:00','2020-10-28','10:00:00','2020-10-28 10:00:00',2020);
-- 时间使用负数
insert into my_date values ('2020-10-27 12:00:00','2020-10-28','-10:00:00','2020-10-28 10:00:00',2020);
insert into my_date values ('2020-10-27 12:00:00','2020-10-28','-210:00:00','2020-10-28 10:00:00',2020);
insert into my_date values ('2020-10-27 12:00:00','2020-10-28','-2 10:00:00','2020-10-28 10:00:00',2020);-- -2过去两天  48小时
-- year 可以使用两位或四位
insert into my_date values ('2020-10-27 12:00:00','2020-10-28','-10:00:00','2020-10-28 10:00:00',69);
insert into my_date values ('2020-10-27 12:00:00','2020-10-28','-10:00:00','2020-10-28 10:00:00',70);

当上面语句都被执行后的效果(不按顺序):

Timestamp字段:只要当前所在的记录被更新,该字段一定会自动更新成当前时间。

语句:

代码语言:javascript
复制
-- Timestamp:修改记录
update my_date set d1 = '2020-10-27 11:11:11' where d5 = 2069;

执行如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档