【重学 MySQL】五十九、二进制字符串类型与 JSON 类型

news2024/11/24 1:27:07

【重学 MySQL】五十九、二进制字符串类型与 JSON 类型

  • 二进制字符串类型
  • `JSON`类型

在这里插入图片描述
在MySQL数据库中,二进制字符串类型与JSON类型各自具有独特的特点和用途。

二进制字符串类型

二进制字符串类型在MySQL中主要用于存储二进制数据。这类数据类型包括BINARYVARBINARY以及BLOB系列(TINYBLOBBLOBMEDIUMBLOBLONGBLOB)。

  1. BINARYVARBINARY

    • BINARY(M):为固定长度的二进制字符串,M表示最多能存储的字节数,取值范围是0~255个字符。如果未指定(M),则默认只能存储1个字节。如果存储的字段值不足M个字节,MySQL将在右边填充’0’以补齐指定长度。
    • VARBINARY(M):为可变长度的二进制字符串,M表示最多能存储的字节数,总字节数不能超过行的字节长度限制(65535字节),另外还要考虑额外字节开销(VARBINARY类型的数据除了存储数据本身外,还需要1或2个字节来存储数据的字节数)。VARBINARY类型必须指定(M),否则报错。
  2. BLOB系列

    • BLOB是一个二进制大对象(Binary Large Object),可以容纳可变数量的数据。MySQL中的BLOB类型包括TINYBLOBBLOBMEDIUMBLOBLONGBLOB四种类型,它们可容纳值的最大长度不同。
    • 这些类型通常用于存储二进制的大对象,如图片、音频和视频等。但在实际工作中,往往不会在MySQL数据库中使用BLOB类型直接存储这些大对象数据,而是将文件存储到服务器的磁盘上,并将文件的访问路径存储到MySQL中。
    • 在使用BLOBTEXT字段类型时,需要注意以下几点以优化数据库性能:
      • 执行大量的删除或更新操作后,可能会留下很多空洞。为了提高性能,建议定期使用OPTIMIZE TABLE功能对这类表进行碎片整理。
      • 避免在不必要的时候检索大型的BLOBTEXT值。例如,使用SELECT *查询可能不是最佳选择,除非能确定WHERE子句只会找到所需的数据行。
      • 可以考虑将BLOBTEXT列分离到单独的表中,以减少主表的碎片并提升性能。

JSON类型

JSON(JavaScript Object Notation)是一种轻量级的、基于文本的、跨语言的数据交换格式。它易于阅读和编写,同时支持数组和对象等复杂数据结构。

  1. JSON数据类型的支持

    • MySQL从5.7.8版本开始支持JSON数据类型。在此之前,只能通过字符类型(CHARVARCHARTEXT)来保存JSON文档
    • JSON数据类型在插入时能自动校验文档是否满足JSON格式的要求,并优化了存储格式,无需读取整个文档就能快速访问某个元素的值。
  2. JSON字段的增删改查操作

    • 插入操作:可以直接插入JSON格式的字符串,也可以使用MySQL提供的JSON_ARRAY()JSON_OBJECT()等函数来构造JSON数组和对象。
    • 查询操作:可以使用JSON_EXTRACT()函数从JSON文档中提取指定路径的元素。MySQL 8.0及以上版本还支持更复杂的路径表达式和语法糖(如column->pathcolumn->>path)。
    • 修改操作:可以使用 JSON_INSERT() 函数在指定位置插入新值(仅当该位置不存在值时才插入),也可以使用其他JSON函数进行更新和删除操作。
  3. JSON数据类型的优势

    • JSON数据类型使得在数据库中存储和查询复杂数据结构变得更加容易和高效。
    • 它结合了索引和优化的存储格式,可以降低磁盘IO消耗并节省网络带宽。
    • JSON格式的数据易于在不同应用程序之间传递和解析。

综上所述,二进制字符串类型与JSON类型在MySQL中各自扮演着重要的角色。二进制字符串类型主要用于存储二进制数据,而JSON类型则提供了一种高效、灵活的方式来存储和查询复杂数据结构。根据具体的应用场景和需求,可以选择合适的数据类型来优化数据库的性能和可维护性。

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

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

相关文章

使用 ChatGPT Canvas 辅助 ABAP 开发

ChatGPT Canvas 是最近 OpenAI 推出的一个新功能,它不仅仅是一个简单的聊天对话式窗口。 Canvas 旨在扩展 ChatGPT 平台的功能,超越简单的问答交互。 Canvas 可以在单独的窗口中打开专用工作区,用户能够更直观、更高效地与 ChatGPT 在复杂的写作或者编码项目进行协作。 有…

Nginx08-反向代理

零、文章目录 Nginx08-反向代理 1、概述 关于正向代理和反向代理,我们在前面已经介绍过了,简而言之就是正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者之间最大的区别。 Nginx即可以实现正向代理,也可…

【Unity】版本不一致且未升级资产,导致 Unity Sprite 2D 动画播放错误

自己的 Unity版本是 2022.3.45f1。目前折腾的这插件 2D Action RPG Engine: Mythril2D ,推荐使用的 Unity 版本是 2021.3.18。 倒腾了这个 unity animation 动画半天,发现这个 animation sprite resolver 在导入动画帧的时候,一直都导入的是…

LeetCode 11 Container with Most Water 解题思路和python代码

题目: You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]). Find two lines that together with the x-axis form a container, such that the co…

【论文阅读】AUTOREGRESSIVE ACTION SEQUENCE LEARNING FOR ROBOTIC MANIPULATION

ABSTRACT 自回归模型在自然语言处理中取得了显著的成功。在这项工作中,我们为机器人操纵任务设计了一个简单而有效的自回归架构。我们提出了Chunking Causal Transformer(cct),它扩展了因果关系transformers的下一个单标记预测 n…

Nginx07-静态资源访问

零、文章目录 Nginx07-静态资源访问 1、Nginx解决跨域问题 (1)同源策略 同源策略(Same-Origin Policy)是一个关键的网络安全概念,由Netscape公司在1995年引入,现在被所有现代浏览器所采用。它限制了从一…

基于JAVA的鲜花商城管理系统(源码+定制+讲解)鲜花商城管理系统、鲜花商城管理平台、鲜花商城信息管理、鲜花商城系统开发与应用、鲜花在线商城管理系统

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

毕业设计项目 深度学习安全帽佩戴检测(源码+论文)

文章目录 0 前言1 项目运行效果2 设计概要3 最后 0 前言 🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师…

sqli-labs靶场第二关less-2

sqli-labs靶场第二关less-2 本次测试在虚拟机搭建靶场,从主机测试 1、输入?id1和?id2发现有不同的页面回显 2、判断注入类型 http://192.168.128.3/sq/Less-2/?id1’ 从回显判断多一个‘ ,预测可能是数字型注入 输入 http://192.168.128.3/sq/Less…

Sharding 分页原理分析

优质博文:IT-BLOG-CN 如果业务上需要执行如下分页查询,Sharding-JDBC如何执行分页查询的? 官方文档 select * from student_time ORDER BY create_time ASC limit 1000, 5;Sharding-JDBC分页查询时在每个分表中都查询1005条数据&#xff0c…

【树结构与栈】中等力扣练习题

二叉树中和为目标值的路径 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,null,null,5…

2024.10月7日- 非关系型数据库--- Redis

一、Redis介绍 Redis(Remote Dictionary Server),即远程字典服务,也被人们称之为***结构化数据库*** 功能:把周期性数据持久化还能实现主从复制 是一个开源的用C语言编写的支持网络、基于内存、可持久化的日志型Key-Value数据库提供多种语言的API Re…

Facebook 正式推出了一项专为 Z 世代设计的全新改版

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

基于Springboot海宝海鲜餐厅系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

图文深入理解Oracle DB Scheduler(续)-调度的创建

List item 今天是国庆假期最后一天。窗外,秋雨淅淅沥沥淅淅下个不停。继续深宅家中,闲来无事,就多写几篇博文。 本篇承接前一篇,继续图文深入介绍Oracle DB Scheduler。本篇主要介绍调度的创建。 1. 创建基于时间的作业 • 可以…

详解三种常用标准化:Batch Norm Layer Norm RMSNorm

Normalization Normalization现在已经成了神经网络中不可缺少的一个重要模块了,并且存在多种不同版本的归一化方法,其本质都是减去均值除以方差,进行线性映射后,使得数据满足某个稳定分布,如下图所示:  …

开放式耳机是什么意思?分享几款适合各类运动佩戴的蓝牙耳机

其实目前有很多热爱运动的人士常常会陷入一个纠结之中,那就是在进行爬山、骑行、步行、跑步或者健身等各类运动的时候,到底佩戴什么样的蓝牙耳机才最为合适呢?那就我个人而言,我觉得开放式耳机无疑会是运动人士的救星。因为作为一…

OJ在线评测系统 微服务高级 网关跨域权限校验 集中解决跨域问题 拓展 JWT校验和实现接口限流降级

微服务网关跨域权限校验 集中的去解决一下跨域 这段代码是用来配置跨源资源共享(CORS)过滤器的。它创建了一个 CorsConfiguration 实例,允许所有方法和头部,并支持凭证(如 Cookies)。setAllowedOriginPat…

基于SSM+小程序的教育培训管理系统(教育3)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 基于SSM小程序的教育培训管理系统(教育3) 1、项目介绍 1、管理员权限操作的功能包括增删改查网课信息,教师信息,学生信息,试卷,…

多元化网络团队应对复杂威胁

GenAI、ML 和 IoT 等技术为威胁者提供了新的工具,使他们更容易针对消费者和组织发起攻击。 从诱骗受害者陷入投资骗局的Savvy Seahorse ,到使用 ChatGPT 之类的程序感染计算机并阅读电子邮件的自我复制 AI 蠕虫,新的网络威胁几乎每天都在出现…