MySQL5.7 JSON类型使用详解

yizhihongxing

MySQL5.7引入了JSON类型,可以用于存储、查询和处理JSON格式的数据。下面是MySQL5.7 JSON类型使用的详解:

创建表和JSON列

在创建表时,可以为表中的一列指定JSON类型:

CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `info` json NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入JSON数据

插入JSON数据可以直接使用JSON格式的值:

INSERT INTO `person`(`info`) VALUES
('{"name": "张三", "age": 18, "gender": "男"}');

查询JSON数据

查询JSON数据可以使用MySQL5.7提供的一些内置函数:

SELECT `info`->'$.name' AS `name`, `info`->'$.age' AS `age`, `info`->'$.gender' AS `gender`
FROM `person`
WHERE `id` = 1;

该语句将查询id为1的person记录中的name、age和gender字段,并使用->操作符提取JSON值。

更新JSON数据

更新JSON数据可以使用MySQL5.7提供的JSON_SET和JSON_REPLACE函数:

UPDATE `person`
SET `info` = JSON_SET(`info`, '$.age', 20)
WHERE `id` = 1;

该语句将更新id为1的person记录中的age字段为20。

删除JSON数据

删除JSON数据可以使用MySQL5.7提供的JSON_REMOVE函数:

UPDATE `person`
SET `info` = JSON_REMOVE(`info`, '$.gender')
WHERE `id` = 1;

该语句将删除id为1的person记录中的gender字段。

示例说明

假设我们有一张存储公司员工信息的表employee,其中有一列info存储员工的个人信息,包括姓名、年龄、籍贯等。我们可以使用JSON类型来存储这些信息,例如:

CREATE TABLE `employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `info` json NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `employee`(`info`) VALUES
('{"name": "张三", "age": 28, "hometown": "北京"}'),
('{"name": "李四", "age": 35, "hometown": "上海"}'),
('{"name": "王五", "age": 24, "hometown": "广州"}');

假设我们现在需要查询年龄在30岁以下的员工姓名和籍贯,可以使用以下语句:

SELECT `info`->'$.name' AS `name`, `info`->'$.hometown' AS `hometown`
FROM `employee`
WHERE `info`->'$.age' < 30;

该语句将查询出名字为张三和王五的员工,并显示其姓名和籍贯。

假设我们现在需要更新李四的年龄为38岁,可以使用以下语句:

UPDATE `employee`
SET `info` = JSON_SET(`info`, '$.age', 38)
WHERE `info`->'$.name' = '李四';

假设我们现在需要删除王五的籍贯,可以使用以下语句:

UPDATE `employee`
SET `info` = JSON_REMOVE(`info`, '$.hometown')
WHERE `info`->'$.name' = '王五';

以上示例说明了如何使用MySQL5.7的JSON类型来存储、查询、更新和删除JSON格式的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL5.7 JSON类型使用详解 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • DataFrame中去除指定列为空的行方法

    当我们使用Pandas库中的DataFrame存储和处理数据时,有时我们需要从DataFrame中删除一些列完全为空的行。这些行通常会占据空间,降低数据处理效率,对于需要进行数据挖掘和分析的数据集来说,这样的数据行还会对结果产生误差。因此,我们可以通过以下的方法来去除这些行: 方法一:使用DataFrame的dropna()方法 pandas.DataFra…

    python 2023年6月3日
    00
  • bash: /usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or directory

    这个错误提示表示脚本文件中的第一行解释器路径存在问题,可能是回车符(Carriage Return,\r)或文件编码格式引起的。 解决此问题的方法如下: 第一步:检查文件编码格式 在Linux中,使用以下命令来检查文件的编码格式: file -i filename 其中,filename为脚本文件名。 如果命令输出结果中包含“^M”,则表示该文件使用的是DO…

    python 2023年5月20日
    00
  • Python实现自动清理电脑垃圾文件详解

    下面是一份实现自动清理电脑垃圾文件的Python脚本的完整例子。该脚本可以自动清理指定目录下的垃圾文件,例如临时文件、回收站文件等等。本文将针对该例子进行详细的讲解。 1. 问题概述 在我们经过一段时间的电脑操作后,通常都会留下不少的垃圾文件,如缓存文件、临时文件、回收站文件等等。这些文件不仅占用了硬盘空间,而且会影响电脑的运行速度。通常情况下,我们需要手动…

    python 2023年5月13日
    00
  • python json-rpc 规范源码阅读

    下面是“Python json-rpc 规范源码阅读”的完整攻略。 1. 了解 json-rpc 规范 在开始源码阅读之前,需要先了解 json-rpc 规范,这是一种基于 JSON 的远程调用协议。它使用 JSON 格式来传输数据,使用 HTTP 协议进行通信。通过 json-rpc 规范,客户端可以向服务器发送请求,服务器可以处理这些请求并返回响应。 j…

    python 2023年6月3日
    00
  • Python字典的概念及常见应用实例详解

    Python字典的概念及常见应用实例详解 Python字典的概念 Python字典是一种可变容器类型,可以存储任意数量的Python对象,如数字、字符串、列表、甚至其他字典等。与列表、元组、集合等有序容器类型不同,字典是无序容器类型。 Python字典通过键(key)来查询对应的值(value),可以理解为一种映射关系。一个字典包含多个键值对,键值对用冒号分…

    python 2023年5月13日
    00
  • python语言线程标准库threading.local解读总结

    Python语言线程标准库threading.local解读总结 为什么需要线程局部存储? 多线程编程时,会出现多个线程间共享同一个变量的情况,这时候就需要使用线程局部存储。 以常见的Web应用为例,比如Flask框架,在一个请求过程中,可能需要访问全局的数据库连接,但是如果多个请求同时进行时,就会出现线程安全问题。如果每个请求都带有自己的数据库连接,就不会…

    python 2023年5月19日
    00
  • Python自定义主从分布式架构实例分析

    Python自定义主从分布式架构实例分析 介绍 分布式架构是大规模系统的一种设计模式,由多个独立计算机节点组成,各节点之间进行通讯和协作,并共同解决一个问题。本文将讲解Python实现自定义主从分布式架构的完整攻略,包含以下内容: 主从分布式架构原理 服务端代码实现 客户端代码实现 示例说明 主从分布式架构原理 主从分布式架构是指有一个或多个主服务器节点,其…

    python 2023年6月7日
    00
  • python画图–输出指定像素点的颜色值方法

    下面是关于“Python画图–输出指定像素点的颜色值方法”的完整攻略。 1. 为什么需要输出指定像素点的颜色值? 在Python的图像处理中,有时需要获取图像中某个特定像素点的RGB颜色值,比如当我们需要针对某些像素点做特殊的处理,或者需要获取一些特定颜色范围内的像素点来进行图像分析等等。 2. Python输出指定像素点颜色值的方法 那么如何输出指定像素…

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