MySQL: 数据类型之整数型、浮点数、时间日期

news/2024/4/16 18:50:41/文章来源:https://blog.csdn.net/weixin_66118670/article/details/130350086

目录

前言:

数据类型:

整数型:

浮点数与定点数:

浮点数:

定点数:

日期与时间:

DATATIME:

 DATE:

TIMESTAMP:

​编辑 YEAR: 

TIME:


前言:

前面的几篇写了如何创建数据库、创建数据表、如何更改表中的字段、如何进行主键约束、唯一约束、外键约束等等。本篇就要说一下数据表里面的”数据“。

首先说说数据类型。

数据类型:

无非是四大类:整数型、浮点数、日期时间、字符串。

本文先介绍前三个

在前面的博文中,出现了INT(11) 和 FLOAT 两种数据类型。看到这里,有个问题想问很久了:括号里面的11,指的是什么?

该数字指的是数值的数字个数。如 123,个数是3.

那我们先来看整数型。

整数型:

首先,回答问题: tiny,small 谁最小?

tiny

因此 TINYINT 也是最小的,其次是 SMALLINT  <  MEDIUMINT  <  INT <  BIGINT。

整数类型储存字节无符号取值范围有符号取值范围
TINYINT10~255-128 ~ 127
SMALLINT20~65535-32768 ~ 32767
MEDIUMINT30~16777215-8388608 ~ 8388607
INT40~4294967295-2147483648 ~ 2147483647
BIGINT8超大超大too

# 注意,括号内是数据长度,数据长度和取值范围没有关系,并不相互限制!

尝试创建一个数据表,对比一下子这五款数据类型:

# 表的字段不能用 in,会报错。

浮点数与定点数:

浮点数:

浮点数分为单精度浮点数(FLOAT)和双精度浮点数(DOUBLE),如果不太清楚这个概念的话请点击下方大佬链接进行查看:

单精度和双精度的区别_LonelyMrFan的博客-CSDN博客

(这些数据的取值范围太大了,痛苦的闭上了眼睛,就不一一往里敲了,允许我懒惰一下。)

# 如果用户指定的精度超过了精度范围,就会四舍五入处理。

# 插一句:其实在python中使用浮点数的时候,敲进去倒是无所谓,一旦进行运算,就会发现精度问题很大,这里也是一样的,所以要尽量避免用浮点数进行运算。

定点数:

DECIMAL (M,D)

定点数以字符串的形式储存,这样的话其精度就相对较高。

其实说到这里还是晕乎乎的,那么我们直接上例子:

首先选择一个数据库,创建一个名为 flot 的数据表,提示语句如下:

CREATE TABLE flot

(f FLOAT(5,2), d DOUBLE(6,2), dc DECIMAL(5,2));

括号内的数字分别表示(总共数字数,小数点后数字数) 

成功后查看一下数据表:

好的,这个数据表已经创建完成了,那么我们往里添加数据。

INSERT INTO <表名> VALUES(数据);

 如果想要查看表中的数据,就不能使用 DESC 语句了,应该改为 SELECT * FROM <表名>;

可以看到,我们输入的浮点数原封不动的保留了下来,即保留了两位小数。

那么再来尝试一下输入带有三位小数的数字。

结果如下:

 

对比前后两个,我们可以发现,浮点数和定点数都进行了四舍五入的操作。后面只保留两位小数,也就是说,我们在建表的时候,字段 FLOAT 后面的【字段属性】 (f FLOAT(5,2), d DOUBLE(6,2), dc DECIMAL(5,2));,第二个数字“2”,表示的是“保留几位小数”。 

这里有一个warning,我们使用: SHOW WARNINGS; 进行查看

 就是告诉你:输入的浮点数,如果小数点后面的数字数超过了规定数量,会自动四舍五入;定点数也会自动四舍五入,但是他会返回一个WARNING 告诉你。

接下来验证【字段属性】中第一个数字是干嘛用的:

(f FLOAT(5,2), d DOUBLE(6,2), dc DECIMAL(5,2));

随意插入几个比较大的浮点数:

(这里建议各位可以自己操作下,比干看我的错误强) 

经过一堆错误之后,发现最后一个对了,那么我们查看下表内数据:

我们可以发现:

1. 规定小数后有2位,如果不满2位,用0补齐,超过两位,四舍五入。

2. 建立数据表字段属性的时候,括号内第一个(就是前面标红的数字) 指的是数据中包含的数字个数。

日期与时间:

DATETIME:YYYY-MM-DD HH:MM:SS 

DATE:  YYYY-MM-DD

TIMESTAMP:  YYYY-MM-DD HH:MM:SS

YEAR:  YYYY

TIME:  HH:MM:SS

为了方便操作,我建立了一个数据表:

 

DATATIME:

该类型包括 “年 月 日 时 分 秒”,以字符串形式输入,需要8个字节储存。

如:生成 2012-5-6 06: 30: 10  这一个时间,

可以输入:“2012-5-6 06: 30: 10” 或 “20120506063010”.

#  注意取值范围不要太过,年最小为1000,最大为 9999。

创建语句如下,创建后进行检查:

 

 

也可以输入:“12-5-6 06: 30: 10”或 “120506063010”.

# 这里我只输入了年份的后半部分,不过这里需要注意取值范围:“00~69” --> “2000~2069”;“70~99” --> “1970~1999”

尝试输入“981203193010”:

 

使用 NOW() 插入当前日期和时间。

 

 如果使用 CURRENT_DATE()  则会只显示“年月日”,不显示时间。

 DATE:

YYYY-MM-DD: 需要3个字节进行储存。

这一部分的格式可以参考 DATETIME 的“年月日”部分,完全相同。(这一部分不再进行实践)

使用 CURRENT_DATE() 或 NOW() 插入当前日期。

依然利用上面创建的数据表,添加字段 d ,数据类型为 DATE:

查看后,确定添加完成。

向表内插入数据,如果不想插入“DATETIME”类型数据,可以用 NULL 来占位。

 尝试插入当前时间:

 

 

TIMESTAMP:

TIMESTAMP 的显示格式和 DATETIME 相同,储存需要4字节,但DATESTAMP 的范围明显小于 DATETIME。其范围为:'1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC

# UTC = Coordinated Universal Time 标准时区

和DATETIME不同的是,TIMESTAMP 是先将输入的时间转化为标准时区的时间,并以标准时区格式进行保存,查询时再进行转换。

这个语句可以修改时区:

set time_zone='+<小时数>';

 
YEAR: 

范围: 1901~2155

在添加“年”的时候,可以使用字符串,也可以使用数字。字符串和前面的内容一样,数字则需要注意“0”和“00”。

添加字段:

先添加 数字00 试试看。

 

 添加数字 0 试试:

添加字符串 “00”:

这回就变成了 2000,再试试单个字符“0”:

 

依然是可行的。

再试试其他数字,如 1978;

 是可以的。

TIME:

取值范围:-838:59:59 ~ 838:59:59

TIME 类型不但可以表示一天的时间,还可表示过去的时间,和时间段。

插入时间的时候也有不同类型:

1122:指的是 00:11:22

前面的数据太多,清空一下:

 

好的,我们来重复前面的步骤,添加字段,插入数据:

11: 22: 00

 差别显而易见。

如何表示“一段时间”呢?

D HH 格式:

比如我想输出:2天零3个小时

’2 03‘

 2天3小时27分51秒:

# 时间部分也可以什么符号都不带,直接敲一串数字:031729——3小时17分钟29秒,但要注意,分钟部分不能够超过60,否则就会报错。

# 如果想要输出当前的时间,NOW() 最方便,还可以尝试 CURRENT_TIME()

 

 

注意:

MySQL允许不规则语法出现,可以用各种符号代替 “-” 和 “:”,不建议这么干,太乱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103366.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年主流的选择仍是Feign, http客户端Feign还能再战

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 微服务组件之http客户端Feign 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649;&#x1f649;。 …

音视频开发面试题大盘点:掌握这些基础知识,你就能轻松应对面试

前言 音视频开发作为一种高技术含量的领域&#xff0c;随着人们对数字媒体的需求不断增加&#xff0c;其前景非常广阔。预计在2023年&#xff0c;音视频开发领域仍将继续保持快速发展的态势&#xff0c;尤其是在移动互联网、物联网、虚拟现实、增强现实等领域。 根据BOSS招聘…

Jenkins Kubernetes

Kubernetes集成Harbor Harbor 私服配置 在Kubernetes的master和所有worker节点上加上harbor配置&#xff0c;修改daemon.json&#xff0c;支持Docker仓库&#xff0c;并重启Docker。 sudo vim /etc/docker/daemon.json {"registry-mirrors": ["https://jrabv…

微信小程序 开发中的问题(simba_wx)

目录 一、[将 proto 文件转成 json 文件](https://blog.csdn.net/wzxzRoad/article/details/129300513)二、[使用 test.json 文件](https://blog.csdn.net/wzxzRoad/article/details/129300513)三、[微信小程序插件网址](https://ext.dcloud.net.cn/)四、[vant-weapp网址](http…

从0搭建Vue3组件库(八):使用 release-it 实现自动管理发布组件库

使用 release-it 实现自动管理发布组件库 上一篇文章已经打包好我们的组件库了,而本篇文章将介绍如何发布一个组件库。当然本篇文章介绍的肯定不单单只是发布那么简单。 组件库发布 我们要发布的包名为打包后的 easyest,因此在 easyest 下执行pnpm init生成package.json {&…

本地缓存解决方案Caffeine | Spring Cloud 38

一、Caffeine简介 Caffeine是一款高性能、最优缓存库。Caffeine是受Google guava启发的本地缓存&#xff08;青出于蓝而胜于蓝&#xff09;&#xff0c;在Cafeine的改进设计中借鉴了 Guava 缓存和 ConcurrentLinkedHashMap&#xff0c;Guava缓存可以参考上篇&#xff1a;本地缓…

【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata

NacosSentinelSeata 9/9 1、SpringCloud Alibaba简介1.1 主要功能1.2 具体组件 2、SpringCloud Alibaba Nacos服务注册和配置中心2.1 Nacos介绍2.2 Nacos下载安装2.3 使用Nacos作为注册中心2.3.1 在父工程的pom文件中引入springcloudalibaba依赖2.3.2 创建cloudalibaba-provide…

适合学生党的蓝牙耳机品牌有哪些?性价比高的无线耳机推荐

相较于有线耳机&#xff0c;蓝牙耳机的受欢迎程度可谓是越来越高&#xff0c;当然&#xff0c;这也离不开部分手机取消耳机孔的设计。最近看到很多网友问&#xff0c;适合学生党的蓝牙耳机品牌有哪些&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款性价比高的无线耳机…

static_cast、dynamic_cast和reinterpret_cast区别和联系

其实网上相关的资料不少&#xff0c;但是能够说清楚明白这个问题的也不多。 于是&#xff0c;我尝试着问了一下AI&#xff0c;感觉回答还可以&#xff0c;但是需要更多的资料验证。 让我们先看看AI是怎么回答这个问题的。 static_cast、dynamic_cast和reinterpret_cast都是C中…

视频音频提取器推荐:快速提取视频中的音频!

视频中的音频可以用于很多用途&#xff0c;比如制作配乐、音频剪辑等。但是&#xff0c;许多人并不知道如何将视频中的音频提取出来。如果您也是这样的情况&#xff0c;那么本文为您介绍一个简单易用的视频音频提取器&#xff1a;。 它是一个免费的在线工具&#xff0c;可以帮…

如何在Web上实现激光点云数据在线浏览和展示?

无人机激光雷达测量是一项综合性较强的应用系统&#xff0c;具有数据精度高、层次细节丰富、全天候作业等优势&#xff0c;能够精确测量三维现实世界&#xff0c;为各个行业提供了丰富有效的数据信息。但无人机激光雷达测量产生的点云数据需要占用大量的存储空间&#xff0c;甚…

DataGridView 真·列头不高亮 真·列头合并

高亮BUG VB.Net&#xff0c;在 .NET Framework 4.8 的 WinForm 下(即不是 WPF 的绘图模式、也不是 Core 或 Mono 的开发框架)&#xff0c;使用 DataGridView 行模式&#xff0c;还是有个列头表现为高亮显示&#xff1a; 查找各种解决方式: 设置 ColumnHeadersDefaultCellSty…

YOLOv1代码复现2:数据加载器构建

YOLOv1代码复现2&#xff1a;数据加载器构建 前言 ​ 在经历了Faster-RCNN代码解读的摧残后&#xff0c;下决心要搞点简单的&#xff0c;于是便有了本系列的博客。如果你苦于没有博客详细告诉你如何自己去实现YOLOv1&#xff0c;那么可以看看本系列的博客&#xff0c;也许可以帮…

【Java实战篇】Day13.在线教育网课平台--生成支付二维码与完成支付

文章目录 一、需求&#xff1a;生成支付二维码1、需求分析2、表设计3、接口定义4、接口实现5、完善controller 二、需求&#xff1a;查询支付结果1、需求分析2、表设计与模型类3、接口定义4、接口实现步骤一&#xff1a;查询支付结果步骤二&#xff1a;保存支付结果&#xff08…

VUE3如何定义less全局变量

默认已经安装好了less&#xff0c;这里不过多讲。 &#xff08;1&#xff09;首先我们需要下载一个插件依赖&#xff1a; npm i style-resources-loader --save-dev &#xff08;2&#xff09;VUE3里配置vue.config.js文件内容 代码&#xff1a; const path require("p…

HashMap如何解决哈希冲突

HashMap如何解决哈希冲突 Hash算法和Hash表Hash冲突解决哈希冲突的方法开放地址法链式寻址法再hash法建立公共溢出区 Hash算法和Hash表 Hash算法就是把任意长度的输入通过散列算法编程固定长度的输出。这个输出结果就是一个散列值。 Hash表又称为“散列表”&#xff0c;它是通…

SpringBoot中一个注解优雅实现重试Retry框架

目录: 1、简介2、实现步骤 1、简介 重试&#xff0c;在项目需求中是非常常见的&#xff0c;例如遇到网络波动等&#xff0c;要求某个接口或者是方法可以最多/最少调用几次&#xff1b;实现重试机制&#xff0c;非得用Retry这个重试框架吗&#xff1f;那肯定不是&#xff0c;相信…

Mysql 查询同类数据中某一数字最大的所有数据

方法一、将时间进行排序后再分组 该表表名为customer, park_id表示园区id&#xff0c;joined_at表示用户的加入时间&#xff0c;created_at表示用户的创建时间。 需求&#xff1a;查出每个园区中&#xff0c;最早加入园区的第一位用户 select * from (select * from custome…

数据库课设--基于Python+MySQL的餐厅点餐系统(表的设计)

文章目录 一、系统需求分析二、系统设计1. 功能结构设计2、概念设计2.2.1 bill_food表E-R图2.2.2 bills表E-R图2.2.3 categories E-R图2.2.4 discounts表 E-R图2.2.5 emp表E-R图2.2.6 food 表E-R图2.2.7 member表E-R图2.2.8 member_point_bill表E-R图2.2.9 servers表E-R图2.2.1…

操作系统考试复习—第二章 2.1 2.2程序和进程的描述

第二章 进程的描述与控制 程序&#xff1a;有序的指令集合 程序顺序执行的特征&#xff1a;1.顺序性 2.封闭性 3.可再现性(确定性) 在多道程序环境下&#xff0c;允许多个程序并发执行&#xff0c;此时他们将失去封闭性&#xff0c;并具有间断性和不可再现性的特征。为此引…