首页 > 数据库 >MySQL中对JSON数据操作(较全)

MySQL中对JSON数据操作(较全)

时间:2023-07-17 14:44:58浏览次数:42  
标签:较全 WHERE json value dept JSON MySQL deptName

MySQL对JSON数据操作

链接:(160条消息) 【MySQL】对JSON数据操作(全网最全)_mysql json_0世界和平0的博客-CSDN博客

  1. 创建json格式字段

    CREATE TABLE `dept` (
      `id` int(11) NOT NULL,
      `dept` varchar(255) DEFAULT NULL,
      `json_value` json DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
  2. 条件查询:使用json字段名->'$json属性'

    SELECT * from dept WHERE json_value->'$.deptLeaderId'='5';
    
  3. 多条件查询

    SELECT * from dept WHERE json_value->'$.deptLeaderId'='5' and json_value->'$.deptId'='5';
    
  4. 多个字段查询

    SELECT * from dept WHERE json_value->'$.deptLeaderId'='5' and json_value->'$.deptId'='5';
    
  5. 关联查询

    SELECT * from dept,dept_leader WHERE dept.json_value->'$.deptLeaderId'=dept_leader.json_value->'$.id' ;
    
  6. 一般函数查询操作:

    1. json_extract(字段名,$.json字段名):从json返回想要的字段

      select id,json_extract(json_value,'$.deptName') as deptName from dept;
      
    2. JSON_CONTAINS():JSON格式数据是否在字段中包含特定对象

      select * from dept WHERE JSON_CONTAINS(json_value, JSON_OBJECT("deptName","部门5"))
      
    3. JSON_OBJECT():将一个键值对列表转换成json对象

      SELECT * from (
      SELECT *,json_value->'$.deptName' as deptName FROM dept
      ) t WHERE JSON_CONTAINS(deptName,JSON_OBJECT("depp","dd"));
      
    4. JSON_ARRAY():创建JSON数组

      SELECT * from dept WHERE JSON_CONTAINS(json_value->'$.deptName',JSON_ARRAY("1"))
      
    5. JSON_TYPE():查询某个json字段属性类型

      SELECT json_value->'$.deptName' ,JSON_TYPE(json_value->'$.deptName') as type from dept 
      
    6. JSON_EXTRACT():从JSON文档返回数据

      SELECT * FROM dept WHERE JSON_EXTRACT(json_value,'$.deptName') like '%部门%';
      
    7. JSON_KEYS():JSON文档中的键数组

      SELECT JSON_KEYS(json_value) FROM dept 
      
    8. JSON_SET(json_doc, path, val, path2,val2,...):将数据插入JSON格式中,有key则替换,无key则新增

      update dept set json_value=JSON_SET('{"deptName": "部门2", "deptId": "2", "deptLeaderId": "4"}','$.deptName','新增的部门1','$.newData','新增的数据') WHERE id=2;
      
      select * from dept WHERE id =2
      

      注意:如果json_doc不包含之前的值,之前的值会被新值覆盖

    9. JSON_INSERT():插入值(往json中插入新值,但不替换已经存在的旧值)

      UPDATE dept set json_value=JSON_INSERT('{"a": "1", "b": "2"}', '$.deptName', '新增的部门2','$.newData2','新增的数据2') 
      WHERE id=2
      
    10. JSON_REPLACE():更新JSON数据

      UPDATE dept set json_value=JSON_REPLACE('{"a": "1", "b": "2", "deptName": "新增的部门2", "newData2": "新增的数据2"}', '$.newData2', '更新的数据2') WHERE id =2;
      
      select * from dept WHERE id =2
      
    11. JSON_REMOVE():从JSON文档中删除数据

      UPDATE dept set json_value=JSON_REMOVE('{"a": "1", "b": "2", "deptName": "新增的部门2", "newData2": "更新的数据2"}','$.a') WHERE id =2;
      
    12. JSON_SEARCH(json_doc,查询终止条件,搜索参数):用于在json格式中查询并返回条件的节点。

标签:较全,WHERE,json,value,dept,JSON,MySQL,deptName
From: https://www.cnblogs.com/xiao688/p/17560042.html

相关文章

  • python连接Mysql 1-01
    一,下载对应python环境的MySQL连接包我的是python3所以下载的是这个(cmd)pip3installPyMySQL二,创建py文件编写importpymysql#打开数据库连接db=pymysql.connect(host='localhost',user='root',password='123456',db='test1')#使用cursor()方法创建一个游......
  • java怎么将json数组设置编码格式
    项目方案:JavaJSON数组编码格式设置1.项目背景和目标本项目旨在探讨如何使用Java编程语言将JSON数组设置为指定的编码格式。JSON(JavaScriptObjectNotation)是一种常用的数据交换格式,它使用文本格式来表示数据,易于人类阅读和编写,同时也易于机器解析和生成。在实际项目中,我们经常......
  • 一文搞懂为什么Mysql索引会失效
    在工作中,如果我们想提高一条语句查询速度,通常都会想对字段建立索引。 但是索引并不是万能的。建立了索引,并不意味着任何查询语句都能走索引扫描。稍不注意,可能你写的查询语句是会导致索引失效,从而走了全表扫描,虽然查询的结果没问题,但是查询的性能大大降低。今天就来跟大家盘......
  • 90%的程序员都不知道Mysql索引下推
    索引下推(IndexConditionPushdown)ICP是Mysql5.6之后新增的功能,主要的核心点就在于把数据筛选的过程放在了存储引擎层去处理,而不是像之前一样放到Server层去做过滤。虽然这是一个比较简单的概念,但是可能很多不细心的同学对于索引下推会存在一个小小的误区,至于是什么,请看下文......
  • Vue3 遍历显示Json数组
    在Vue项目中遍历显示Json数组以列表的形式显示的页面上 main.js全局json对象//全局jsonconstglobalData=reactive({extTelTalkData:[{userExten:"1000",userName:"刘亦菲",callStatus:"通话"},......
  • 复杂数据回显 返回json 字符串转换成单选
     <el-table        :data="tableData"        border        style="width:882px;margin-left:8px;">        <el-table-column        prop="label"        label="......
  • mysql截取字符串函数 --九五小庞
    一、mysql截取字符串函数1、left(str,length)从左边截取length2、right(str,length)从右边截取length3、substring(str,index)当index>0从左边开始截取直到结束 当index<0从右边开始截取直到结束 当index=0返回空4、substring(str,index,len)截取str,从index开始,截取len......
  • mysql 查询存储过程调用日志
    如何实现MySQL查询存储过程调用日志作为一名经验丰富的开发者,我将在下面的文章中向你介绍如何实现MySQL查询存储过程调用日志。首先,让我们来了解一下整个流程,然后逐步介绍每一步需要做的事情和相应的代码。流程概述下面是实现MySQL查询存储过程调用日志的整体流程:步骤......
  • mysql 查询blob字段
    如何实现“mysql查询blob字段”概述在MySQL数据库中,BLOB字段是用于存储二进制数据的数据类型,包括图片、音频、视频等。本文将教会你如何通过MySQL查询BLOB字段的值。流程下面是实现“mysql查询blob字段”的流程:步骤描述1连接到MySQL数据库2创建一个查询语句3......
  • mysql 查询 表空间
    MySQL查询表空间MySQL是一个开源的关系型数据库管理系统,被广泛应用于各种规模的应用程序中。在MySQL中,表空间是用于存储数据的物理空间。理解和管理表空间对于提高数据库性能和管理数据库非常重要。本文将介绍如何使用MySQL查询表空间信息,并提供一些示例代码来帮助读者更好地理解......