当前位置: 首页 > news >正文

MySQL中处理JSON数据:大数据分析的新方向

1. JSON 数据类型

        1.1、JSON 类型:MySQL 支持使用 JSON 类型来存储 JSON 文档。
        1.2、存储空间:存储 JSON 文档所需的空间与存储 LONGBLOB 或 LONGTEXT 类似。
        1.3、默认值:在 MySQL 8.0.13 之前,JSON 列不能有非空的默认值

2. JSON 数据的操作

插入 JSON 数据:

INSERT INTO table_name (json_column) VALUES ('{"key": "value"}');

查询 JSON 数据(提取值):

SELECT json_column->'$.key' FROM table_name;

查询 JSON 数据(修改值):

UPDATE table_name SET json_column = json_column->'{"key": "new_value"}';

JSON 函数:

        JSON_EXTRACT:提取 JSON 对象中的值。
        JSON_SET:设置 JSON 对象中的值。
        JSON_INSERT:向 JSON 对象中插入新键值对。
        JSON_REPLACE:替换 JSON 对象中的值。
        JSON_REMOVE:删除 JSON 对象中的键。
        JSON_CONTAINS:检查 JSON 对象是否包含特定值。
        JSON_LENGTH:返回 JSON 数组的长度。
        JSON_DEPTH:返回 JSON 对象的最大深度。
        JSON_OBJECTAGG:用于聚合 JSON 对象。
        JSON_ARRAYAGG:用于聚合 JSON 数组。

3. JSON 索引

创建 JSON 索引(单路径索引):

CREATE INDEX idx_json ON table_name (json_column->'$.key');

创建 JSON 索引(多路径索):

CREATE INDEX idx_json ON table_name USING SPATIAL (json_column->'$.location');

使用 JSON 索引:索引可以显著提高涉及 JSON 数据的查询性能

4. JSON 数据的存储与检索:

        存储:JSON 数据可以存储在 JSON 类型的列中。
        检索:可以使用 JSON 函数来检索和操作 JSON 数据

5. JSON 数据的使用场景:

        灵活性:适用于列不固定的场景,如日志数据、配置文件等。
        大数据分析:可以方便地存储和查询结构化的 JSON 数据,适用于大数据分析。

示例

假设有一个表 users 包含 JSON 类型的列 data,存储用户的个人信息。

创建表

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,data JSON NOT NULL
);

插入数据

INSERT INTO users (data) VALUES ('{"name": "Alice", "age": 30}');

查询数据

SELECT * FROM users WHERE data->'$.age' > 25;

更新数据

UPDATE users SET data = JSON_SET(data, '$.age', 31) WHERE id = 1;


   

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Visiual Studio如何添加C语言的依赖和一些快捷键
  • 小黄鸟九宫格切图丨教你如何将图片九宫格切图_照片分割成9张工具
  • Earth‘s Future | 西南大学时伟宇团队揭示长江上游径流变化对气候变化与人类活动响应的驱动机制不同
  • DB-GPT开源项目论文解读
  • Vulkan 学习(5)---- Vulkan 内存分配
  • 树上启发式合并——dsu on tree
  • React学习笔记(三)——redux状态管理工具
  • mysql的安装与初始化
  • Python--正则表达式
  • Centos7整合fail2ban配置ssh和pgsql以及vault
  • 开发日记-EaxyExcel修改模板sheet名称
  • 如何实现一棵红黑树
  • Element-UI自学实践(二)
  • 【Node】【4】事件循环和EventEmitter类
  • 2024年特种设备作业人员考试题库及答案(流动式起重机Q2)
  • Druid 在有赞的实践
  • Fundebug计费标准解释:事件数是如何定义的?
  • mysql外键的使用
  • Promise初体验
  • python 装饰器(一)
  • vue-loader 源码解析系列之 selector
  • 如何进阶一名有竞争力的程序员?
  • 小试R空间处理新库sf
  • 学习笔记:对象,原型和继承(1)
  • Nginx实现动静分离
  • scrapy中间件源码分析及常用中间件大全
  • 数据库巡检项
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #java学习笔记(面向对象)----(未完结)
  • (+4)2.2UML建模图
  • (13):Silverlight 2 数据与通信之WebRequest
  • (9)STL算法之逆转旋转
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (三)elasticsearch 源码之启动流程分析
  • (一) storm的集群安装与配置
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)ABI是什么
  • ******之网络***——物理***
  • ... 是什么 ?... 有什么用处?
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net连接oracle数据库
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @EnableAsync和@Async开始异步任务支持
  • @Transactional 详解
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [C#] 基于 Token 的鉴权与签名机制详解 接口对接鉴权 token、sign(a=1b=2c=3d=4)、Base64、参数加密、MD5
  • [C#数据加密]——MD5、SHA、AES、RSA