在現代應用程式開發中,管理半結構化資料是一個常見的挑戰。 MySQL 在 5.7 版本中引入了對 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_PRETTY() 進行人類可讀的 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"]}');
輸出:
SELECT JSON_EXTRACT(details, '$.name') AS name, details->'$.age' AS age FROM users;
MySQL 提供了廣泛的 JSON 函數,超出了詳細介紹的範圍。以下是其他 JSON 函數:
MySQL 的 JSON 函數為管理關係型資料庫中的半結構化資料提供了強大的工具。它們使得直接在 SQL 中儲存、查詢和操作 JSON 變得容易。了解這些函數有助於簡化工作流程並開啟資料庫設計的新方法。
以上是在 MySQL 中使用 JSON的詳細內容。更多資訊請關注PHP中文網其他相關文章!