MySQL5.7 JSON类型使用详解

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日

相关文章

  • Python快速优雅的批量修改Word文档样式

    下面是“Python快速优雅的批量修改Word文档样式”的完整攻略。 1. 准备工作 1.1 安装Python-docx库 Python-docx库是一个可以操作docx格式文件的Python库,提供了非常方便的接口。使用pip安装即可。 pip install python-docx 1.2 准备Word文档样式模板 在使用Python实现批量修改Word…

    python 2023年5月18日
    00
  • Python中的Selenium异常处理

    当使用Selenium进行自动化测试时,我们常常会遇到各种异常情况。为了提高测试的可靠性和稳定性,我们需要对这些异常情况进行合理的处理。Python中的Selenium提供了一些内置的异常类来处理这些异常情况。本攻略将详细讲解“Python中的Selenium异常处理”的完整流程,并给出两个实例说明,帮助大家更好地理解和应用异常处理的方法。 1. 异常的产生…

    python 2023年5月13日
    00
  • pytest测试框架+allure超详细教程

    Pytest测试框架+Allure超详细教程 简介 Pytest是一个功能丰富和强大的Python测试框架。它可以让编写和执行测试变得更简单、更容易、更快速。 Allure是一种开源测试报告框架,它可为Pytest测试框架提供更加详细和有吸引力的测试结果报告。 本文将介绍如何使用Pytest测试框架+Allure测试报告框架进行测试。 安装和配置 首先需要安…

    python 2023年5月13日
    00
  • 一篇文章带你了解Python和Java的正则表达式对比

    以下是“一篇文章带你了解Python和Java的正则表达式对比”的完整攻略: 一、问题描述 Python和Java都是常用的编程语言,它们都支持正则表达式。本文将详细讲解Python和Java的正则表达式对比,以及如何在两种语言中使用正则表达式。 二、解决方案 2.1 Python和Java的正则表达式对比 Python和Java的正则表达式语法有很多相似之…

    python 2023年5月14日
    00
  • python 实现非极大值抑制算法(Non-maximum suppression, NMS)

    Python实现非极大值抑制算法(Non-maximum suppression,NMS)攻略 非极大值抑制算法(Non-maximum suppression,NMS)是一种常用的目标检测算法,它在检到多个重叠的目标时,选择最可能是真实目标的那个目标。在本攻略中,我们将介绍如使用实现非极大值抑制算法,并提供两个示例来说明如何使用非极大值抑制算法进行目标检测…

    python 2023年5月14日
    00
  • Python免登录实现域名解析的示例详解

    Python免登录实现域名解析的示例详解 在本文中,我们将介绍如何使用Python免登录实现域名解析。我们将使用dnspython库来解析域名,并使用requests库发送HTTP请求。 步骤1:安装必要的库 在使用Python免登录实现域名解析之前,我们需要先安装必要的库: pip install dnspython requests 在上面的示例中,我们…

    python 2023年5月15日
    00
  • 在Python中计算数据框中的单词[重复]

    【问题标题】:Counting Words in a Dataframe in Python [duplicate]在Python中计算数据框中的单词[重复] 【发布时间】:2023-04-03 11:12:01 【问题描述】: 我已使用 pandas 将 CSV 文件导入 Python。该文件由 3 列和 498 行组成。我只需要一个名为“描述”的列的字数…

    Python开发 2023年4月8日
    00
  • python-try-except:pass的用法及说明

    当我们在使用Python编写程序过程中,经常会遇到一些异常错误,如文件找不到,除数为0等。为了避免这些错误导致程序异常终止,可以使用 try 和 except 语句来处理异常情况。 try 语句的工作原理是,首先执行 try 后面的语句块,如果执行成功,就直接跳过 except 语句;如果执行过程中出现了异常,则跳转到 except 语句块中处理异常。 如果…

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