MySQL 获取 JSON 里面的某个值(多层级)教程

作为一名经验丰富的开发者,我经常被问到如何在 MySQL 中处理 JSON 数据。MySQL 5.7 版本开始支持 JSON 类型的数据,这使得我们能够以更灵活的方式存储和查询结构化数据。在本文中,我将向刚入行的开发者介绍如何在 MySQL 中获取 JSON 里的某个多层级值。

步骤概览

以下是实现此任务的步骤概览:

步骤描述
1创建包含 JSON 数据的表
2插入 JSON 数据
3使用 JSON 函数查询 JSON 数据
4结果分析

步骤详解

步骤 1: 创建包含 JSON 数据的表

首先,我们需要创建一个表来存储 JSON 数据。以下是一个示例 SQL 语句:

CREATE TABLE `json_data` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `data` JSON
);
  • 1.
  • 2.
  • 3.
  • 4.

这条 SQL 语句创建了一个名为 json_data 的表,其中包含一个名为 data 的列,数据类型为 JSON。

步骤 2: 插入 JSON 数据

接下来,我们需要向表中插入一些 JSON 数据。以下是示例数据:

{
  "name": "John",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA"
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

对应的 SQL 插入语句如下:

INSERT INTO `json_data` (`data`) VALUES ('{
  "name": "John",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA"
  }
}');
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
步骤 3: 使用 JSON 函数查询 JSON 数据

现在,假设我们想要获取 JSON 数据中 address 对象的 city 属性。我们可以使用 JSON_EXTRACT 函数来实现这一点:

SELECT JSON_EXTRACT(data, '$.address.city') AS city
FROM json_data;
  • 1.
  • 2.

这条 SQL 语句使用 JSON_EXTRACT 函数从 data 列中提取 address 对象的 city 属性,并将其命名为 city

步骤 4: 结果分析

执行上述查询后,你将得到以下结果:

+------------+
| city       |
+------------+
| Anytown    |
+------------+
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

这表明我们成功地从 JSON 数据中提取了所需的值。

结论

通过本文的介绍,你应该已经了解了如何在 MySQL 中处理 JSON 数据,特别是如何获取 JSON 里的某个多层级值。这个过程包括创建表、插入数据、使用 JSON 函数查询数据以及分析结果。希望这篇文章能帮助你更好地理解和使用 MySQL 中的 JSON 功能。

饼状图示例

以下是使用 Mermaid 语法创建的饼状图示例,展示了不同数据类型的分布情况:

数据类型分布 25% 30% 45% 数据类型分布 JSON INT VARCHAR

这个饼状图可以帮助我们直观地了解不同数据类型在数据集中的占比。