Mysql的所有数据类型和它们的区别

一、数值类型

1. 普通整数数值类型

以下数据类型只能用以保存整数

整数数值类型
类型存储大小(字节)有符号的取值范围(允许存在负数)无符号的取值范围
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2- 327678 ~ 327670 ~ 65535
MEDIUMINT3- 8388608 ~ 83886070 ~ 1677215
INT4- 2147483648 ~  21474836470 ~ 4294967295
BINTINT5- 9223372036854775808 ~ 92233720368547758070 ~ 18446744073709551615

2. 严格数值数据类型

        保存必须为确切精度的数值,对于需要运用到计算中的数据正确性比近视数值数据类型更高。适合用来存储金额、科学数据等。

严格数值数据类型
类型说明
INTEGER整数数据类型,类比INT类型
SMAIIINT取值范围比较小的整数数据类型
DECIMAL

浮点数数据类型,使用规则是DECIMAL(M,D)。M是精度,D是标度;精度表示保存值的主要位数,标度表示小数点后面可以保存的位数。

M默认为10,D默认为0;M范围为1 ~ 65 (旧版mysql范围是 1 ~ 254),D范围默为0~30,且不能超过M;可以存储正数、负数和0

NUMERIC严格数值的浮点数,使用规则同DECIMAL一样。

3. 近似数值数据类型

        一下数据类型都可以用来存储浮点数,既有小数点的数。但因以下数据类型是近似数值数据类型,存储时是采用二进制表示,因此存在精度问题。所以再存储需要用来做计算和大小比较的数据时推荐使用 DECIMAL。

近似数值数据类型
类型说明有符号的取值范围
FLOAT浮点数数据类型;4字节单精度;使用方法 FLOAT(M,D);占用的存储空间比DOUBLE小-3.402823466E+38到3.402823466E+38
DOUBLE浮点数数据类型;8字节双精度;使用方法 DOUBLE(M,D); 精度比FLOAT更精确-1.7976931348623157E+308到1.7976931348623157E+308
REAL浮点数数据类型

二、时间和日期类型

 1. ‘伪日期比null更省空间’

允许将'0000-00-00'保存为“伪日期”(如果不使用NO_ZERO_DATE SQL模式)。这在某些情况下比使用NULL值更方便(并且数据和索引占用的空间更小)

2. 开启ALLOW_INVALID_DATES SQL模式,允许保存不合法的日期

        若想保存不合法的日期,例如2023-11-31 ,那么MySQL将给会出警告或错误。但业务需要执意要保存这种错误格式,那么我们可以开启ALLOW_INVALID_DATES SQL模式。

在这种模式下,MySQL只验证月范围为从0到12,日范围为从0到31。这些范围可以包括零,因为MySQL允许在 DATE 或 DATETIME 列保存日/月和日是零的日期。这在应用程序需要保存一个你不知道确切日期的生日时非常有用。在这种情况下,只需要将日期保存为'1999-00-00'或'1999-01-00'。

        但需要注意的一点是,如果保存此类日期,DATE_SUB()或DATE_ADD等需要完整日期的函数不会得到正确的结果。

3. 不想在日期中出现0,使用NO_ZERO_IN_DATE SQL模式

4. DATETIME、DATE、TIMESTAMP和YEAR类型,MySQL使用以下规则解释含模糊年值的日期:

·         00-69范围的年值转换为2000-2069。(本世纪)

·         70-99范围的年值转换为1970-1999。(上世纪)

5. Mysql的时间函数

                Mysql时间函数大全-CSDN

        时间和日期类型
类型数据格式数值范围示例说明
DATEYYYY-MM-DD 2023-11-30
DATETIMEYYYY-MM-DD  HH:MM:SS2023-11-30 14:34:40,允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符,例如2023.11.30 14:34:40同前面的格式是一样的日期
TIMESTAMP

YYYY-MM-DD  HH:MM:SS       

 
    

1970 ~ 2037;

    可以设置为自动初始化当前时间戳或自动更新

        以UTC格式保存,存储时对当前的时区进行转换,检索时再转换回当前的时区

TIMEHH:MM:SS-838:59:59 ~ 838:59:59

示例值: 14:34:40

可为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。

YEARYYYY

四位数字或字符串:1901 ~ 2155

两位字符串:00~99

两位整数:1 ~ 99

2023

三、字符串(String)类型

1. 字符集

        ASCII属性为CHAR列分配latin1字符集。UNICODE属性分配ucs2字符集。

2. BINARY的填充

        (1)设计表money为binary

(2) 插入数据

insert into number value (10,'a');

(3)查询比对,第一条sql是只查询a,第二天sql是加上拼接的0字节进行的查询

3. 严格模式的开启对字符串存储的影响

        如果存入的数据超过规定的长度,则会被截取。当开启严格模式的时候,SQL将会产生错误,然后值会被拒绝。

        当严格模式未开启的时候,则只会产生一条警告,然后数据被截取后存入。

字符串类型
共同点类型长度范围说明

CHAR 和 ARCHAR

(两者在存储和检索中都不进行大小写转换)

1. 索引前缀长度可选CHAR0 ~ 255 (字符)

长度将在设置时固定

当保存数值不足设置的长度时候,会在右侧填充空格达到指定的长度,检索的时候尾部的空格会被删除,所以如果存入的数据末尾存在空格,被检索的时候就会被删除。

VARCHAR0 ~ 65535 (字符)

可变长度字符串,不会进行填充。

BINARY 和 VARBINARY

1.类比VARCHAR,包含二进制字符串,包含字节字符串

2. 没有字符集,并且排序和比较基于列值字节的数值值。

BINARY0 ~ 255 (字节)

长度将在设置时固定;

当保存数值不足设置的长度时候,会在右侧填充0x00(零字节)达到指定的长度;

大小上: 0x00 < 空格;

VARBINARY0 ~ 65535 (字节)

可变长度字节串,不会进行填充。

BLOB 和 TEXT

(两者在存储和检索中都不存在大小写转换)

1. 当保存或检索时不删除尾部空格

2. 不能有默认值;

3. 必须指定索引前缀的长度

BLOB

单位:(字节)

TINYBLOB:0~255

BLOB:0~65,535

 MEDIUMBLOB:0~16,777,215

 LONGBLOB:0~4,294,967,295

【字节字符串】

1. 是一个二进制大对象,可以容纳可变数量的数据

2. 有4种BLOB类型: TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。

3. BLOB列没有字符集,排序和比较基于列值字节的数值值
4. 会占用大量存储空间

TEXT

单位:(字节)

TINYTEXT:0~255

TEXT:0~65,535

MEDIUMTEXT:0~16,777,215

LONGTEXT:0~4,294,967,295

【字符字符串】

1. 有4种TEXT类型: TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT

对应4种BLOB类型,有相同的最大长度和存储需求。

2. 有一个字符集,排序和比较根据字符集的校对规则。

ENUM1 ~ 65,535(元素)

1. ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值

2.允许是空字符串‘’或null;

3.如果ENUM列被声明为NOT NULL,其默认值为允许的值列的第1个元素;

4.每个枚举值有一个索引,允许的值列中的值从1开始编号,空字符串错误值的索引值是0;

5. 如果将一个数字保存到ENUM列,数字被视为索引,并且保存的值是该索引对应的枚举成员;

SET1-64(成员)

1.SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值;

2.当创建表时,SET成员值的尾部空格将自动被删除

3.为列分配值时需注意大小写

4.SET值按数字顺序排序。NULL值排在非NULL SET值的前面

四、多维上的点、线、面、几何类型

点、线、面类型
类型格式说明
POINT

POINT(x y);

x为经度,y为维度。两者之间用空格相隔开

存储二维平面地理坐标的单个点
MULTIPOINT

MULTIPOINT(x1 y1, x2 y2, x3 y3)

可以存储多个点,点与点用逗号分隔

存储二维平面地理坐标的多个个点
LINESTRING

LINESTRING(x1 y1,x2 y2,x3 y3)

x为经度,y为维度。点与点用逗号分隔,经纬度之间用空格分隔

线存储一组连续的直线段
MULTILINSTRING

MULTILINESTRING((x1 y1, x2 y2), (x3 y3, x4 y4))

可以存储多个直线,直线与直线用集合形式下的逗号分隔

存储一多个连续的线段
POLYGON

POLYGON((x1 y1,x2 y2,x3 y3,x4 y4),(x5 y5,x6 y6,x7 y7,x8 y8))

x为经度,y为维度。点于点用逗号分隔,经纬度之间用空格分隔

存储一个面
MULTIPOLYGONPOLYGON(((x1 y1,x2 y2,x3 y3,x4 y4)),((x5 y5,x6 y6,x7 y7,x8 y8)))存储多个面
GEOMETRY

GEOMETRY(POINT(x1 y1))

里面可以跟子类中的任意一个

几何体

存储一个几何体;

它是所有空间集合类型的基类,其他类型如POINT、LINESTRING、POLYGON都是它的子类。

GEOMETRYCOLLECTIONGEOMETRYCOLLECTION(POINT(x1 y1), POINT(x2 y2), LINESTRING(x3 y3,x4 y4))存储多个几何体

    

          

五、JSON类型

JSON类型
类型说明
JSON

主要用于存储json对象和json数组两种格式的数据,当JSON类型的数据插入时,会自动校验数据格式,若不是JSON则会报错。

字段可以无线拓展

会自动处理稀疏字段,避免了null值造成的冗余存储

支持索引

此功能是mysql 5.7之后才支持的功能。

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

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

相关文章

有向图的拓扑序列(拓扑排序)

给定一个 n 个点 m 条边的有向图&#xff0c;点的编号是 1 到 n&#xff0c;图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列&#xff0c;如果拓扑序列不存在&#xff0c;则输出 −1。 若一个由图中所有点构成的序列 A 满足&#xff1a;对于图中的每条边 (x,y)&a…

zabbix的自动发现机制,代理功能,SNMP监控

1.zabbix自动发现机制 zabbix客户端主动和服务端联系&#xff0c;将自己的地址和端口发送服务端&#xff0c;实现自动添加监控主机 客户端是主动的一方。 缺点&#xff1a;自定义网段中主机数量太多&#xff0c;登记耗时会很久&#xff0c;而且这个自动发现机制不是很稳定 …

CTF刷题记录

刷题 我的md5脏了KFC疯狂星期四坤坤的csgo邀请simplePHPcurl 我的md5脏了 g0at无意间发现了被打乱的flag&#xff1a;I{i?8Sms??Cd_1?T51??F_1?} 但是好像缺了不少东西&#xff0c;flag的md5值已经通过py交易得到了&#xff1a;88875458bdd87af5dd2e3c750e534741 flag…

geemap学习笔记021:提取页面交互区域像素值

前言 本节介绍的内容是如何提取交互界面中的单一像素值以及区域像素均值等&#xff0c;并且导出为CSV或者SHP文件。 1 导入库并显示地图 import ee import geemap import osee.Initialize() Map geemap.Map() Map2 交互提取像素值 2.1 加载数据 landsat7 ee.Image(LANDS…

Spring Cloud + Vue前后端分离-第4章 使用Vue cli 4搭建管理控台

Spring Cloud Vue前后端分离-第4章 使用Vue cli 4搭建管理控台 4-1 使用vue cli创建admin项目 Vue 简介 Vue作者尤雨溪在google工作时&#xff0c;最早只想研究angular的数据绑定功能&#xff0c;后面觉得这个小功能很好用&#xff0c;有前景&#xff0c;就再扩展&#xff…

C语言之数组精讲(2)

目录 数组的复制 输入数组元素的值 对数组的元素进行倒序排列 使用数组进行成绩处理 对象式宏 数组元素的最大值和最小值 赋值表达式的判断 数组的元素个数 结语 数组的复制 我们把数组中的元素全部复制到另一个数组中。 #include<stdio.h>int main() {int i;int…

用23种设计模式打造一个cocos creator的游戏框架----(三)外观模式模式

1、模式标准 模式名称&#xff1a;外观模式 模式分类&#xff1a;结构型 模式意图&#xff1a;为一组复杂的子系统提供了一个统一的简单接口。这个统一接口位于所有子系统之上&#xff0c;使用户可以更方便地使用整个系统。 结构图&#xff1a; 适用于&#xff1a; 当你想为…

基于Java SSM框架实现毕业生就业信息管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现毕业生就业信息管理系统演示 摘要 目前高校毕&#xff0c;毕业生就业工作意义尤为重大但形势又特别严峻。党中央和国务院高度重视高校毕业生就业工作&#xff0c;及时作出了一系列决策部署&#xff0c;多措并举拓展就业渠道&#xff0c;千方百计帮助高校…

iOS(swiftui)——系统悬浮窗( 可在其他应用上显示,可实时更新内容)

因为ios系统对权限的限制是比较严格的,ios系统本身是不支持全局悬浮窗(可在其他app上显示)。在iphone14及之后的iPhone机型中提供了一个叫 灵动岛的功能,可以在手机上方可以添加一个悬浮窗显示内容并实时更新,但这个功能有很多局限性 如:需要iPhone14及之后的机型且系统…

CTF 7

信息收集 存活主机探测 arp-scan -l 端口探测 nmap -sT --min-rate 10000 -p- 192.168.0.5 服务版本等信息 nmap -sT -sV -sC -O -p22,80,137,138,139,901,5900,8080,10000 192.168.0.5Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-02 21:23 CST Stats: 0:01:30 elaps…

基于vue开发-创建登录页

我们使用vue创建完成项目后就开始我们的项目页面开发&#xff0c;如有不清楚怎么操作的可以看博主的前一篇文档 使用vue UI安装路由插件-CSDN博客 在src/views文件夹中创建一个登录页面 在此之前&#xff0c;我们可以先安装一个插件、element、vant、iview等等&#xff0c;可…

vue中shift+alt+f格式化防止格式掉其它内容

好处就是使得提交记录干净&#xff0c;否则修改一两行代码&#xff0c;习惯性按了一下格式化快捷键&#xff0c;遍地飘红&#xff0c;下次找修改就费时间 1.点击设置图标-设置 2.点击这个转成配置文件 {"extensions.ignoreRecommendations": true,"[vue]":…

Stable Diffusion AI绘画系列【17】:绘本童话风格场景

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

使用 Kubernetes Agent Server 实现 GitOps

目录 温习 GitOps 极狐GitLab Kubernetes Agent 极狐GitLab GitOps workflow 极狐GitLab KAS 的配置 创建极狐GitLab agent 创建 agent token Kubernetes 上安装 agent&#xff08;agentk&#xff09; 极狐GitLab GitOps workflow 实践 写在最后 温习 GitOps GitOps …

课题学习(十五)----阅读《测斜仪旋转姿态测量信号处理方法》论文

一、 论文内容 1.1 摘要 为准确测量旋转钻井时的钻具姿态&#xff0c;提出了一种新的信号处理方法。测斜仪旋转时&#xff0c;垂直于其旋转轴方向加速度计的输出信号中重力加速度信号分量具有周期性特征&#xff0c;以及非周期性离心加速度分量频率低于重力加速度信号分量频率…

渲染(iOS渲染过程解析)

渲染 渲染原理 一个硬核硬件科普视频 CPU和GPU CPU&#xff08;Central Processing Unit&#xff09;&#xff1a;现代计算机整个系统的运算核心、控制核心&#xff0c;适合串行计算。GPU&#xff08;Graphics Processing Unit&#xff09;&#xff1a;可进行绘图运算工作的…

系列四、过滤器简介

一、简介 1.1、概述 过滤器作为JavaWEB的三大组件&#xff08;Servlet程序、Filter过滤器、Listener监听器&#xff09;&#xff0c;它的主要功能是用来拦截请求的&#xff0c;当客户端要访问某个资源时&#xff0c;先来到配置好的过滤器&#xff0c;过滤器可以在用户访问某个…

Docker架构、镜像操作和容器操作

一、docker基本管理和概念 1、概念 docker&#xff1a;开源的应用容器引擎。基于go语言开发的。运行在Linux系统中的开源的轻量级的“虚拟机” docker的容器技术可用在一台主机上轻松到达为任何应用创建一个轻量级到的&#xff0c;可移植的&#xff0c;自给自足的容器 dock…

基于remix+metamask+ganache的智能合约部署调用

在我们部署合约时为了让它更接近真实区块链去中心化体验&#xff0c;我们需要调用小狐狸&#xff08;Metamask&#xff09;来进行真实交易&#xff0c;而metamask里没有内置虚拟测试币&#xff0c;我们需要进行调用Ganache来添加带有虚拟测试币的账号。以上就是三者的关系&…

编程实战:类C语法的编译型脚本解释器(十)编译表达式

系列入口&#xff1a;编程实战&#xff1a;类C语法的编译型脚本解释器&#xff08;九&#xff09;编译语句 本文介绍表达式的编译。 一、代码概览 表达式的编译就是不断获取下一个标识符&#xff0c;直到遇到不属于表达式的东西。 完整代码如下&#xff1a; Expression* GetExp…