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
を持つ という名前のテーブルを作成しますmessage
。message
列には任意の 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_table
4 つのレコードをテーブルに挿入します。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;
上記の例では、message
name プロパティと 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 関数の高度な使用法が多数あり、必要に応じて学習できます。
この記事は完成しました!