Mysql如何对json数据进行查询及修改

MySQL 5.7及以上版本支持JSON类型,可以对JSON数据进行查询和修改。下面将详细讲解MySQL如何对JSON数据进行查询和修改的攻略。

查询JSON数据

1. 使用->符号

使用->符号可以从JSON数据中提取指定字段的值。

语法:

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

其中,json_column是JSON类型的列,key是需要提取的字段名,table_name是表名。

示例:从table1表中提取指定字段的值。

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

INSERT INTO table1 (data) VALUES
('{"name": "Tom", "age": 18, "gender": "male"}'),
('{"name": "Jim", "age": 20, "gender": "female"}'),
('{"name": "Lucy", "age": 21, "gender": "female"}');

SELECT data->'$.name', data->'$.age' FROM table1;

输出:

+------------+-----------+
| data->'$.name' | data->'$.age' |
+------------+-----------+
| "Tom"      | 18      |
| "Jim"      | 20      |
| "Lucy"     | 21      |
+------------+-----------+

2. 使用JSON_EXTRACT函数

JSON_EXTRACT函数可以从JSON数据中提取指定字段的值。

语法:

SELECT JSON_EXTRACT(json_column, '$.key') FROM table_name;

其中,json_column是JSON类型的列,key是需要提取的字段名,table_name是表名。

示例:从table1表中提取指定字段的值。

SELECT JSON_EXTRACT(data, '$.name'), JSON_EXTRACT(data, '$.age') FROM table1;

输出:

+--------------------------+------------------------+
| JSON_EXTRACT(data, '$.name') | JSON_EXTRACT(data, '$.age') |
+--------------------------+------------------------+
| "Tom"                    | 18                    |
| "Jim"                    | 20                    |
| "Lucy"                   | 21                    |
+--------------------------+------------------------+

修改JSON数据

1. 使用->符号

使用->符号可以修改JSON数据中指定字段的值。

语法:

UPDATE table_name SET json_column = JSON_SET(json_column, '$.key', value) WHERE condition;

其中,json_column是JSON类型的列,key是需要修改的字段名,value是要修改为的值,condition是修改的条件,table_name是表名。

示例:将table1表中年龄为18岁的人的性别修改为"female"。

UPDATE table1 SET data = JSON_SET(data, '$.gender', 'female') WHERE data->'$.age' = 18;

2. 使用JSON_SET函数

JSON_SET函数可以修改JSON数据中指定字段的值。

语法:

UPDATE table_name SET json_column = JSON_SET(json_column, '$.key', value) WHERE condition;

其中,json_column是JSON类型的列,key是需要修改的字段名,value是要修改为的值,condition是修改的条件,table_name是表名。

示例:将table1表中年龄为20岁的人的性别修改为"male"。

UPDATE table1 SET data = JSON_SET(data, '$.gender', 'male') WHERE JSON_EXTRACT(data, '$.age') = 20;

注意,使用JSON_SET函数时,需要指定新值的JSON格式,否则可能会报错。例如,我们需要修改名叫"Tom"的信息中的年龄和性别。

UPDATE table1 SET data = JSON_SET(data, '$.age', 20, '$.gender', 'male') WHERE JSON_EXTRACT(data, '$.name') = 'Tom';

这里需要为新值指定JSON格式:'$.age', 20, '$.gender', 'male',其中逗号不可省略。

以上就是MySQL如何对JSON数据进行查询及修改的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql如何对json数据进行查询及修改 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言实现循环队列

    C语言实现循环队列的完整攻略 前言 循环队列是一种常用的数据结构,用于解决队列数据访问时线性存储空间限制的问题。本文将讲解如何使用C语言实现循环队列。 队列的定义 队列是一种特殊的线性表,具有先进先出(FIFO)的特点,即最先进入队列的元素最先被取出。 循环队列的特殊之处在于,队列空间是使用连续的线性存储空间而形成的一个环。 循环队列的实现 代码实现 在C语…

    C 2023年5月23日
    00
  • C语言实例讲解选择语句的使用

    下面是“C语言实例讲解选择语句的使用”的完整攻略。 选择语句简介 在C语言中,选择语句是控制程序流程的重要工具之一。选择语句是根据表达式的值,决定程序执行的不同路径。选择语句包括if语句、if-else语句、switch语句等。下面我们分别进行讲解。 if语句 if语句是C语言中最常用的选择语句之一,用于根据表达式的值,判断是否执行某段代码。if语句的语法如…

    C 2023年5月23日
    00
  • 浅谈C++对象的内存分布和虚函数表

    C++对象的内存分布和虚函数表是C++中非常重要的一个知识点。在本篇攻略中,我将详细讲解这个知识点,主要包括以下内容: C++对象的内存分布 虚函数表的概念 虚函数表的实现 示例说明 一、C++对象的内存分布 C++对象在内存中的分布一般包括以下几个部分: 对象头部分:一般包括虚函数表指针和类型信息指针; 对象的成员变量部分:对象的所有成员变量都存放在这里;…

    C 2023年5月22日
    00
  • C++使用文件实现学生信息管理系统

    下面我将针对“C++使用文件实现学生信息管理系统”的完整攻略进行详细讲解。 一、需求分析 学生信息管理系统需要实现以下功能: 添加学生信息 删除学生信息 修改学生信息 查询学生信息 显示所有学生信息 保存学生信息到文件中 从文件中读取学生信息 二、设计思路 定义学生信息结构体,包含姓名、学号、性别、年龄等属性。 定义主函数,包含循环菜单,实现添加、删除、修改…

    C 2023年5月23日
    00
  • C++如何判断一个数字是否为质数

    下面是C++判断一个数字是否为质数的完整攻略,包含两条示例说明。 什么是质数 在数论中,质数是指除了 1 和本身之外,不能被其它正整数整除的数。比如,2、3、5、7、11、13等是质数,而4、6、8、9等不是质数。 C++中判断一个数字是否为质数 C++中判断一个数字是否为质数的方法一般是通过判断这个数是否能被除了1和它本身之外的其它数整除。这种判断方法比较…

    C 2023年5月23日
    00
  • C 判断

    当在编写 C 语言程序时,我们可能需要使用判断语句来根据条件执行不同的代码块。C 中有三种不同的判断语句:if 语句、switch 语句以及三目运算符。在这里,我将详细讲解这三种判断语句的使用方法和语法规则。 if 语句 if 语句允许我们对一个条件进行测试,并根据测试结果决定是否执行某个代码块。其基本语法如下: if (条件) { 需要执行的代码块 } 其…

    C 2023年5月10日
    00
  • C语言文件操作详情(一)

    下面我将详细讲解“C语言文件操作详情(一)”的完整攻略。 一、文件操作的概念 在C语言中,文件被看作是一系列按照一定顺序排列的记录(Record)的集合。C语言提供了一组文件操作函数,可以用来打开、关闭、读写、移动文件。 二、文件的打开和关闭 在C语言中,打开文件需要使用fopen函数,关闭文件使用fclose函数。fopen函数可以使用不同的方式打开文件,…

    C 2023年5月23日
    00
  • VsCode安装和配置c/c++环境小白教程(图文)

    下面我将为您详细讲解“VsCode安装和配置c/c++环境小白教程(图文)”的完整攻略。 VsCode安装和配置c/c++环境小白教程(图文) 1. VsCode安装 首先,你需要在官方网站下载并安装最新版本的VsCode,并按照向导一步一步进行安装。 2. 配置c/c++环境 在VsCode中,我们需要安装一些插件和配置一些环境变量来使得c/c++代码可以…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部