[MySQL] MySQL に保存されている JSON データをクエリおよびフィルターするにはどうすればよいですか?

1. 背景の紹介

JSON (JavaScript Object Notation) は、最新のアプリケーションで広く使用されている軽量のデータ交換形式です。非構造化データの処理と保存はますます重要になっています。MySQL は一般的に使用されるリレーショナル データベース管理システムであり、非構造化データのストレージとクエリをサポートするために、MySQL では JSON データ型のサポートが導入されています。

MySQL はバージョン 5.7.8 から JSON のサポートを追加し、MySQL データベースに JSON 形式でデータを保存およびクエリできるようになりました。この記事では、MySQL を使用して保存された JSON データをクエリおよびフィルターする方法を紹介し、対応するコード例を示します。

2. サポートされる JSON データ型

MySQL バージョン 5.7.8 以降、MySQL は JSON データ型のサポートを導入しました。MySQL は、オブジェクト、配列、文​​字列などを含むあらゆる JSON データを保存できます。また、MySQL は、JSON データのクエリと操作を容易にするために、JSON データ型用の一連の操作関数と演算子も提供します。

3. 基本データ

3.1 テーブルの作成

DROP TABLE IF EXISTS `my_table`;
CREATE TABLE `my_table`  (
  `id` int NOT NULL,
  `message` json NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

上の例では、という名前の JSON 列my_tableを持つ という名前のテーブルを作成しますmessagemessage列には任意の JSON データを格納できます。

3.2 JSONデータの挿入

JSON 列にデータを挿入するには、JSON 関数を使用して JSON 文字列を JSON データ型に変換します。以下に例を示します。

INSERT INTO `my_table` (`id`, `message`) VALUES (1, '{\"age\": 30, \"name\": \"John\"}');
INSERT INTO `my_table` (`id`, `message`) VALUES (2, '{\"age\": 40, \"name\": \"Mary\"}');
INSERT INTO `my_table` (`id`, `message`) VALUES (3, '{\"age\": 50, \"name\": \"Tom\"}');
INSERT INTO `my_table` (`id`, `message`) VALUES (4, '{\"age\": 60, \"name\": \"Jermy\"}');

上記の例では、列に JSON オブジェクトが含まれるmy_table4 つのレコードをテーブルに挿入します。message

3.3 JSON データのクエリ

-> または ->> 演算子を使用して JSON データをクエリできます。-> 演算子は JSON オブジェクトの属性値を返し、->> 演算子は属性値の文字列表現を返します。

ここに2つあります

JSON データのクエリの例 1:

SELECT message->'$.name' AS name FROM my_table;

結果は次のとおりです。

ここに画像の説明を挿入します

クエリ例 2:

SELECT * FROM my_table WHERE JSON_EXTRACT(message, '$.age') > 40

結果は次のとおりです。

ここに画像の説明を挿入します

4. 操作機能

MySQL は、JSON データのクエリと操作を容易にする一連の JSON データ操作関数を提供します。一般的に使用される JSON データ操作関数の一部を次に示します。

4.1 JSON_OBJECT

JSON_OBJECT関数は、JSON オブジェクトを作成するために使用されます。以下に例を示します。

SELECT JSON_OBJECT('name', 'John', 'age', 30) AS message;

上記の例では、messagename プロパティと age プロパティを含む という名前の JSON オブジェクトを作成します。

ここに画像の説明を挿入します

4.2 JSON_ARRAY

JSON_ARRAY関数は、JSON 配列を作成するために使用されます。以下に例を示します。

SELECT JSON_ARRAY('apple', 'banana', 'orange') AS fruits;

上の例では、fruits という名前の 3 つの要素を含む JSON 配列を作成します。

ここに画像の説明を挿入します

4.3 JSON_EXTRACT

JSON_EXTRACT関数は、JSON データから値を抽出するために使用されます。以下に例を示します。

SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name') AS name;

上記の例では、JSON データから name 属性の値を抽出します。

ここに画像の説明を挿入します

上記は最も基本的な使用法にすぎませんが、JSON データ型を操作するための MySQL 関数の高度な使用法が多数あり、必要に応じて学習できます。

この記事は完成しました!

おすすめ

転載: blog.csdn.net/weixin_44299027/article/details/135371750