MySQL常见的数据类型

一、数值型

5 种整型 tinyint、smallint、mediumint、int 和 bigint,主要区别就是取值范围不同,还可以在类型前添加一个 限制词 unsigned,不允许添加负数。

3 种浮点型:不能精确存放 float 和 double,可以精确存放 decimal 和 numeric

整型数

mysql 提供了 5 种整型:tinyint、smallint、mediumint、int 和 bigint, 最大的区别就是取值范围tinyint 1B、smallint 2B、mediumint 3B、int 4B、bigint 8B

整数类型适用场景

1、tinyint 一般用于枚举类型,比如系统设定取值范围很小而且固定的场景 。

2、smallint 可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等 。

3、MediumInt 用于较大整数的计算,比如火车站每日的客流量等 。

4、Int 或者 Integer【别名系统】取值范围足够大,一般情况下不用考虑超限问题,用得最多,例如商品编号 。

5、BigInt 只有处理特别巨大的整数时才会用到,例如双 11 的交易量、大型门户网站点击量、证券公司衍生产品持仓量等。

浮点数

decimal 和 numeric 作为字符串存储浮点数,可以实现浮点数的精确存储,并不是 float 和 double 种使用二进制浮点数存储。使用方法 numeric(总位宽,小数位数),小数位数必须小于等于总位宽;小数位数最大值 30,总位宽最大值为 65,注意可能存储的数据会超出范围,其中的符号位和小数点不占位宽。

二、字符串类型

char(n)

定长字符串,n 值用于表示所允许的最大长度,取值范围 0-255,如果不指定长度,默认1

1、长度限制不区分中英文,表示是允许最多存储多少个字符

2、使用 length 函数获取的是字节数,不是字符数。在 utf-8 编码种一个汉字占用 3 个字节。当指定 char 的 n 值大于 0,而插入数据小于 n 值,系统会自动在末尾使用空格补够长度,由于系统无法区分是自动添加的空格还是字符串末尾的空格,所以进行等值判断时,去除末尾空格进行比对。

varchar(n)

可变长度的字符串,n 值取值范围为 0-65535,如果不设置 n 值则报错。实际存储多少个字符就占多少个位置,每个列所占用的长度根据具体内容变化。

注意:单一的 where id='a'仍旧不能区分存储的内容是 a 还是 a 【a 空格】,但是 length 函数可以区分字符串的长度。例如 select * from t5 where id='a' and length(id)>1;

char 和 varchar 的区别

1、char 属于定长,varchar 属于变长。选择最基本的依据就是定长使用 char,变长使用 varchar

2、char 允许的最大长度为 255,varchar 允许的最大长度为 65535

3、如果存储的字符串长度变化不大,推荐优先考虑使用 char,例如针对口令进行 md5 加密,固定长度的行不容易产生碎片;对于长度很短的列,char 的性能优于 varchar,是因为 varchar 需要引入额外一个或者两个字节存储字符串长度。

4、char 在计算种会自动去除空格;varchar 不会去除空格,但是进行字符串比较时,会去除空格后进行比较;在插入数据时系统会自动去除字符串默认多余的空格。

三、大对象类型 Lob

大对象类型可以分为 2 大类:文本类型和二进制类型。

1、BLOB 是一个二进制大对象,可以容纳可变长度的数据,其中分为 tinyblob、blob、mediumblob、longblob。 一般用于存储二进制数据,例如声音、图像、视频等。

2、Text 是一个文本大对象,可以容纳可变长度的字符串数据,实际上还有一种写法为 clob,其中分为 tinytext、text、mediumtext、longtext,一般用于存储文本类型数据,例如小说、商品简介。

两者之间的区别:

1、BLOB 是二进制类型,可以容纳可变长度的数据,区分大小写;TEXT是一个不区分大小写的 BLOB。

2、TEXT 文本类型,可以存比较大的文本段,搜索速度稍慢,因此如果不是特别大的内容,建议使用 CHAR,VARCHAR 来代替。还有 TEXT 类型不用加默认值,加了也没用。而且TEXT 和 BLOB 类型的数据删除后容易导致空洞,使得文件碎片比较多,所以频繁使用的表不建议包含 TEXT 类型字段,建议单独分出去,单独用一个表。

四、日期时间类型

MySQL 有多种表示日期和时间的数据类型,不同的版本可能有所差异,MySQL8 版本支持的日期和时间类型主要有 year 类型、time 类型、date 类型、datetime 类型和 timestamp 类型

1、year 通常用来表示年份

2、date 通常用来表示年月日

3、time 通常用来表示时分秒

4、datetime 通常用来表示年月日时分秒

5 、 timestamp 通常用来表示带时区的年月日时分秒

五、集合和枚举类型

set 集合类型,可以设置多个集合成员,允许从多个集合成员种选择多个数据进行插入。

enum 枚举类型,可以设置允许选用的多个值,列只能赋予某个枚举成员值。

六、位类型

bit 类型存储的是二进制值。

bit(M)类型,M 为表示二进制的位数,取值范围 1<=M<=64,占用空间大约为(m+7)/8 个字节。如果没有指定 M,默认是 1 位,这个 1 位表示只能存储 1 位的二进制值,这里 M 是表示二进制位数。

总结

1、定义数据类型就是定义列,数据类型决定数据的特性【域完整性】

2、数据类型主要分为字符串类型、定点数和浮点数类型、日期类型、大对象类型【慎用】

3、数据类型在不同的存储引擎上【innodb MyISAM Memory】表现不同。

4、数据所采用的数据类型是根据业务需求和对应的数据类型特征进行选择,不建议使用过于复杂的数据类型。

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

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

相关文章

朋友,代码库的“健身方案”要不要了解一下?

你有没有想过&#xff0c;你的代码库可能正面临“健康危机”—— 代码臃肿、低效交付、BUG隐藏、潜藏的安全风险…… “健身达人”上线 如果你的开发、安全和运维团队像是三位“健身达人”&#xff0c;那么极狐GitLab的DevSecOps线上成熟度评估&#xff0c;就是他们的“健身教…

09、用数据变量等控制 vue 项目标签中 CSS 样式的五种方法

通过 vue 中的变量值控制标签/组件样式 Ⅰ、通过 Vue3 的数据变量来控制 h1 标签样式&#xff1a;1、代码为&#xff1a;2、截图为&#xff1a; Ⅱ、通过 vue3 的 computed 来控制 h1 标签样式&#xff1a;1、代码为&#xff1a;2、截图为&#xff1a; Ⅲ、通过 vue3 的 comput…

MySQL gh-ost DDL 变更工具

文章目录 1. MDL 锁介绍2. 变更工具3. gh-ost 原理解析4. 安装部署5. 操作演示5.1. 重点参数介绍5.2. 执行变更5.3. 动态控制 6. 风险提示 1. MDL 锁介绍 MySQL 的锁可以分为四类&#xff1a;MDL 锁、表锁、行锁、GAP 锁&#xff0c;其中除了 MDL 锁是在 Server 层加的之外&am…

SpringBoot vue轮胎批发系统

SpringBoot vue轮胎批发系统 系统功能 首页 图片轮播 轮胎商品 评论 公告信息 搜索 购物车 立即购买 客服中心 登录注册 个人中心 我的订单 我的地址 我的收藏 后台管理 登录 个人中心 用户管理 轮胎分类管理 轮胎商品管理 公告信息管理 客服中心管理 轮播图管理 订单管理 …

Linux--基本知识入门

一.几个基本知识 终端: CtrlAltT 或者桌面/文件夹右键,打开终端切换为管理员: sudo su 退出:exit查看内核版本号: uname -a内核版本号含义: 5 代表主版本号;13代表次版本号;0代表修订版本号;30代表修订版本的第几次微调;数字越大表示内核越新. 二.目录…

Canny详解

Canny 边缘检测是一种经典的图像处理技术&#xff0c;被广泛应用于计算机视觉和图像处理领域。它由 John F. Canny 在 1986 年提出&#xff0c;是一种多阶段的边缘检测算法&#xff0c;具有高精度和低错误率的特点。 Canny 边缘检测的步骤&#xff1a; 高斯滤波&#xff08;Ga…

FreeRTOS学习第10篇--队列使用示例

FreeRTOS学习第10篇–队列使用示例 本文目标&#xff1a;FreeRTOS学习第10篇–队列使用示例 按照本文的描述&#xff0c;可以进行简单的使用队列。 本文实验条件&#xff1a;拥有C语言基础&#xff0c;装有编译和集成的开发环境&#xff0c;比如&#xff1a;Keil uVision5 …

【Java 并发】AbstractQueuedSynchronizer

1 AQS 简介 在同步组件的实现中, AQS 是核心部分, 同步组件的实现者通过使用 AQS 提供的模板方法实现同步组件语义。 AQS 则实现了对同步状态的管理, 以及对阻塞线程进行排队, 等待通知等一些底层的实现处理。 AQS 的核心也包括了这些方面: 同步队列, 独占式锁的获取和释放, 共…

手写vue将虚拟 Dom 转化为真实 Dom

vue将虚拟 Dom 转化为真实 Dom {tag: DIV,attrs:{id:app},children: [{tag: SPAN,children: [{ tag: A, children: [] }]},{tag: SPAN,children: [{ tag: A, children: [] },{ tag: A, children: [] }]}] }把上面虚拟Dom转化成下方真实Dom<div id"app"><sp…

做一个微信小程序需要什么条件?

在移动互联网时代&#xff0c;微信小程序已成为连接用户与服务的重要桥梁。它们无需下载安装&#xff0c;使用方便&#xff0c;功能强大&#xff0c;成为商家和开发者的新宠。如果你想要开发一个微信小程序&#xff0c;需要满足哪些条件&#xff1f; 一、开发小程序的基本条件…

Redis 持久化-RDB

RDB&#xff08;Redis DataBase&#xff09;&#xff0c;在指定的时间间隔内将内存中的数据集快照写入磁盘&#xff0c;也就是行话讲的Snapshot快照&#xff0c;它恢复时是将快照文件直接读到内存里。 Redis会单独创建&#xff08;fork&#xff09;一个子进程来进行持久化&…

用网格大师网络重划分时,坐标原点按照XML文件原点填写,导出的瓦块文件命名不对,坐标原点该怎么填写

瓦块名称和原来不一致的原因是瓦块原点这里设置的不对&#xff0c;要和重建设置的瓦块原点保持一致。 网格大师是一款能够解决实景三维模型空间参考、原点、瓦块大小不统一&#xff0c;重叠区域处理问题的工具“百宝箱”&#xff0c;集格式转换、坐标转换、轻量化、瓦片重划分…

ModStartBlog v9.1.0 桌面快捷应用,图片上传前端压缩

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 …

跨境电商流通无阻:API接口在简化全球电商流程中的关键角色

在全球化的经济中&#xff0c;跨境电商已成为许多电商平台的重要增长点。然而&#xff0c;跨国交易涉及复杂的流程和合规性要求&#xff0c;这些都可能成为商家扩张全球市场的障碍。API&#xff08;应用程序编程接口&#xff09;在这里扮演了关键角色&#xff0c;它简化了全球电…

淘宝商品销量数据接口,淘宝API接口

淘宝商品销量数据接口是淘宝开放平台提供的一种API接口&#xff0c;通过该接口&#xff0c;商家可以获取到淘宝平台上的商品销量数据。 淘宝商品销量数据接口可以用于获取特定商品的销量数据、特定店铺的销量数据、特定类目的销量数据等。商家可以根据自己的需求来调用该接口&…

控制学习_正弦波无刷直流力矩电机建模、控制带宽讨论与选择

无刷电机通过电子换向器实现定子的磁场旋转&#xff0c;去电刷后使用寿命大幅提升&#xff0c;是现在更流行的选择。三相无刷电机则是无刷电机中比较流行的一款。三相无刷电机的驱动方式有多种&#xff0c;最简单的被称为梯形波驱动、方波驱动或正弦波驱动。而正弦波驱动技术可…

前端路由跳转bug

路由后面拼接了id的千万不能取相近的名字&#xff0c;浏览器分辩不出&#xff0c;只会匹配前面的路径 浏览器自动跳转到上面的路径页面&#xff0c;即使在菜单管理里面配置了正确的路由 跳转了无数次&#xff0c;页面始终不对&#xff0c;检查了路由配置&#xff0c;没有任何问…

java枚举与模拟方法

枚举 枚举的定义 枚举算法&#xff08;穷举算法&#xff09;&#xff0c;这种算法就是在解决实际问题的时候去使用所有的方式去解决这个问题&#xff0c;会通过推理去考虑事件发生的每一种可能性&#xff0c;最后推导出结果 优点 简单粗暴&#xff0c;他暴力的枚举所有可能&…

3.14号arm

1. 计算机基础理论 1.1 计算机的组成 输入设备&#xff1a;将数据转换成计算机可以识别&#xff0c;存储&#xff0c;处理的形式&#xff0c;发送到计算机中 输出设备&#xff1a;将计算机对程序和数据的运算结果输送到外部的设备 存储器&#xff1a;用于将数据保存的模块。 …

【火猫TV】欧联:8强无弱队,意甲英超球队扎堆,利物浦和药厂优势很大!

2023-2024欧联杯八强正式出炉&#xff0c;马赛、本菲卡、勒沃库森、利物浦、西汉姆联、罗马、亚特兰大和AC米兰成功拿到了晋级名额&#xff0c;于是球迷们即将看到近20年竞争最激烈的欧联杯八强对决。虽然这些队伍实力有强有弱&#xff0c;但是能够拼到现在的球队没有弱旅&…