現代のアプリケーション開発では、半構造化データの管理が共通の課題となっています。バージョン 5.7 で導入された MySQL の JSON サポートは、リレーショナル データベース内でそのようなデータを保存、クエリ、操作するための強力な方法を提供します。この投稿では、MySQL が提供する重要な JSON 関数について、開始に役立つ実用的な例を示しながら説明します。
JSON データをリレーショナル データベースに保存すると、半構造化データまたは階層データの処理が簡素化されます。次のことが可能になります:
JSON_OBJECT() 関数と JSON_ARRAY() 関数を使用して、JSON オブジェクトまたは配列を構築できます。
例:
SELECT JSON_OBJECT('id', 1, 'name', 'Alice', 'roles', JSON_ARRAY('admin', 'editor')) AS json_data;
出力:
{"id": 1, "name": "Alice", "roles": ["admin", "editor"]}
JSON データを保存するには、列に JSON データ型を使用します。
例:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, details JSON NOT NULL ); INSERT INTO users (details) VALUES ('{"name": "Bob", "age": 30, "roles": ["viewer", "editor"]}');
MySQL には、JSON ドキュメントからデータを抽出するためのいくつかの関数が用意されています。
例:
SELECT JSON_EXTRACT(details, '$.name') AS name, details->'$.age' AS age FROM users;
出力:
次のコマンドを使用して、JSON データに要素を更新または追加できます。
例:
UPDATE users SET details = JSON_SET(details, '$.city', 'New York') WHERE id = 1; SELECT details FROM users;
出力:
{"name": "Bob", "age": 30, "roles": ["viewer", "editor"], "city": "New York"}
JSON_REMOVE() を使用して、JSON ドキュメントから要素を削除します。
例:
UPDATE users SET details = JSON_REMOVE(details, '$.roles') WHERE id = 1; SELECT details FROM users;
出力:
{"name": "Bob", "age": 30, "city": "New York"}
JSON_CONTAINS() 関数は、JSON ドキュメントに特定の値が含まれているかどうかを確認します。
例:
SELECT JSON_CONTAINS(details, '"New York"', '$.city') AS has_city FROM users;
出力:
JSON_ARRAYAGG() 関数と JSON_OBJECTAGG() 関数は、クエリ結果を JSON 構造に集約するのに役立ちます。
例:
SELECT JSON_ARRAYAGG(name) AS names FROM ( SELECT JSON_EXTRACT(details, '$.name') AS name FROM users ) AS subquery;
出力:
SELECT JSON_OBJECT('id', 1, 'name', 'Alice', 'roles', JSON_ARRAY('admin', 'editor')) AS json_data;
JSON_VALID() 関数は、文字列が有効な JSON かどうかをチェックします。
例:
{"id": 1, "name": "Alice", "roles": ["admin", "editor"]}
出力:
人間が判読できる JSON 形式にするには、JSON_PRETTY() を使用します。
例:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, details JSON NOT NULL ); INSERT INTO users (details) VALUES ('{"name": "Bob", "age": 30, "roles": ["viewer", "editor"]}');
出力:
SELECT JSON_EXTRACT(details, '$.name') AS name, details->'$.age' AS age FROM users;
MySQL は、詳細に説明したもの以外にも幅広い JSON 関数を提供します。以下は他の JSON 関数です:
MySQL の JSON 関数は、リレーショナル データベース内の半構造化データを管理するための強力なツールを提供します。これらにより、SQL 内で JSON を直接保存、クエリ、操作することが簡単になります。これらの機能を理解することは、ワークフローを簡素化し、データベース設計への新しいアプローチを開くのに役立ちます。
以上がMySQL での JSON の操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。