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之后才支持的功能。

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

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

相关文章

华清远见嵌入式学习——C++——作业6

作业要求&#xff1a; 代码&#xff1a; #include <iostream>using namespace std;class Animal { public:virtual void perform() 0;};class Lion:public Animal { private:string foods;string feature; public:Lion(){}Lion(string foods,string feature):foods(foo…

【Spring Boot】如何在IntelliJ IDEA中由同一份spring boot源码运行多个不同端口的实例

我们需要使用一个服务有多个实例的测试场景&#xff0c;那么我们就需要在IntelliJ IDEA中通过不同的端口运行不同的实例&#xff0c;并且运行时的源代码是一样的&#xff0c;那么我们可以在IntelliJ IDEA这样操作&#xff0c;接下来以UserApplication服务为例&#xff1a; 复制…

使用Java API操作HDFS

文章目录 一、了解HDFS Java API&#xff08;一&#xff09;HDFS Java API概述1、配置&#xff08;Configuration&#xff09;2、文件系统&#xff08;FileSystem&#xff09;3、路径&#xff08;Path&#xff09;4、输入输出流&#xff08;FSDataInputStream 和 FSDataOutputS…

codeforces 题目 Powers Of Two

目录 题目&#xff1a; 题目描述&#xff1a; 思路&#xff1a; AC代码&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 给你两个整数 n 和 k 问是否能找到 k 个2的幂&#xff0c;使其总和为 n 若能&#xff0c;则输出这 k 个 2的幂&#xff1b;若不能&#xff0c;…

预览控制;预见控制;预测控制;预观控制(preview control)

预演控制&#xff08;preview control&#xff09;作为一种新兴的控制方法&#xff0c;首次在轮式车辆中被提出。 参考文献&#xff1a; https://www.sciencedirect.com/science/article/pii/S0016003219300390https://www.sciencedirect.com/science/article/pii/S0016003219…

Ardupilot开源飞控之VTOL之旅:配件试装

Ardupilot开源飞控之VTOL之旅&#xff1a;配件试装 1. 源由2. 分析2.1 【修改使用】FC & PDB & GPS打印件2.2 【直接使用】VTX & CRSF打印件 3. 试装3.1 【结构】问题1&#xff1a;GPS座子尺寸非常紧凑&#xff0c;需要用力压入卡座内。3.2 【结构】问题2&#xff…

实验报告-实验四(时序系统实验)

软件模拟电路图 说明 SW&#xff1a;开关&#xff0c;共六个Q1~Q3&#xff1a;输出Y0~Y3&#xff1a;输出 74LS194 首先&#xff0c;要给S1和S0高电位&#xff0c;将A~D的数据存入寄存器中&#xff08;如果开始没有存入数据&#xff0c;那么就是0000在里面移位&#xff0c;不…

智慧小区园区如何布局网络对讲系统

智慧小区园区如何布局网络对讲系统 随着小区住宅的不断更新发展&#xff0c;小区的管理人员也对小区内部的通讯也有了新的要求&#xff0c;要求在工作区域无盲区、语音通讯清晰&#xff0c;小区的安保后勤都能够随时在小区的地下室和室外工作区域、任何时间进行通信。提高小区…

Python 云服务器应用,Https,定时重启

Python 云服务器应用,Https,定时重启 环境搭建Python模块模块导入生成Flask实例GET处理启动服务器打开网页验证 GET接入证书 支持https申请证书下载证书保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录ssl_context 配置 宝塔面板操作在www目录下新建python工作目录在…

CRM立项正当时|走过复杂多变的2023年,明年如何锚定确定性增长?

正值年末&#xff0c;又到复盘今年、规划明年的重要节点。 2023年&#xff0c;黑天鹅和新风口轮番登场&#xff0c;当不确定成常态&#xff0c;环境愈发错综复杂&#xff0c;企业家们如何深谋远虑&#xff0c;带领企业实现可持续、高质量发展&#xff1f;这里提供三个思考视角…

LoadRunner12.55的简介与安装

提示&#xff1a;https://mp.weixin.qq.com/s/iK-fh0VP7v8mNSDNxjkBow 文章目录 LoadRunner的简介与安装loadrunner概述loadrunner的下载与安装 LoadRunner的使用启用VuGen LoadRunner的简介与安装 LoadRunner官网&#xff1a;https://www.microfocus.com/zh-cn/products/load…

智能优化算法应用:基于水基湍流算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于水基湍流算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于水基湍流算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水基湍流算法4.实验参数设定5.算法结果6.参考…

递增子序列(回溯)

题目描述 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情况。 样例…

Unity使用打成图集的Sprite作为模型贴图使用的问题

大家好&#xff0c;我是阿赵。   有时候用Unity引擎做项目的时候&#xff0c;会遇到这样的需求&#xff0c;美术做了一些模型或者特效&#xff0c;然后策划想在游戏运行的时候&#xff0c;读取一些游戏图标放在特效或者模型上面当做贴图使用。   这个需求实现起来很简单&am…

销售人员如何自我提升?

销售人员如何自我提升&#xff1f; 在美国有这么一句流行语&#xff1a;不当总统就干销售员。其实在国内很多老板&#xff0c;高收入人群等大部分是来自销售岗位。因为销售是离钱最近的职业&#xff0c;在销售职业生涯中能收获到很多&#xff0c;比如人际关系能力&#xff0c;…

【刘二大人】pytorch深度学习实践(三):如何实现线性模型的反向传播+代码实现详解(Tensor、backward函数)

目录 参考资料一、反向传播流程1.1 问题1.2 方法1.3 步骤1.4 例题 二、Pytorch中前向传播和反馈的计算2.1 tensor数据类型2.2 定义线性模型并且计算损失2.2.1 torch.tensor.item()2.2.2 代码 2.3 反向传播2.3.1 torch.tensor.backward()2.3.2 tensor.zero_( )2.3.3 代码实现 三…

SystemWeaver—电子电气系统协同研发平台

背景概述 当前电子电气系统在汽车领域应用广泛&#xff0c;其设计整合了多门工程学科&#xff0c;也因系统的复杂性、关联性日益提升&#xff0c;需要其提供面向软件、硬件、网络、电气等多领域交织而导致的复杂系统解决方案。并且随着功能安全、AUTOSAR、SOA、以太网通讯等新要…

Linux基础命令(测试相关)

软件测试相关linux基础命令笔记 操作系统 常见Linux&#xff1a; Redhat系列&#xff1a;RHSL、Centos、FedoraDebian系列&#xff1a;Debian、Ubuntu以上操作系统都是在原生Linux系统上&#xff0c;增加了一些软件或功能。linux的文件及路径特点 Linux没有盘符的概念&#xf…

群星璀璨!亚信科技、TM Forum联合举办数字领导力中国峰会,助百行千业打造转型升级双引擎

11月30日&#xff0c;亚信科技携手著名国际组织TM Forum&#xff08;TeleManagement Forum 电信管理论坛&#xff09;联合举办的2023数字领导力中国峰会在京隆重召开&#xff0c;国内外数百位行业领袖、专家学者、企业高管和生态伙伴齐聚一堂。大会由“数字领导力峰会”“IT数字…

奇迹单车^^

欢迎来到程序小院 奇迹单车 玩法&#xff1a;点击鼠标左键跳跃&#xff0c;不要碰到地上的路障和天上飞的小鸟&#xff0c;统计骑行里程数&#xff0c;快去骑单车吧^^。开始游戏 html <div id"game" style"height: 523px;"></div>css canvas…