--创建表格 CREATE TABLE pet ( name VARCHAR(20), info JSON ); --插入数据 INSERT INTO pet VALUES('Tom', '{"age":2, "species":"cat", "owner":"Sam"}'); --查询数据 SELECT name, info->'$.species' AS species FROM pet WHERE info->>'$.owner' = 'Sam';
JSON 数据类型与 MySQL 中常用的方式不同,它是一种层次结构化的数据格式。这意味着你可以在单一的列中存储多个属性和值,减少重复数据的存储。
JSON 数据类型还提供了许多强大的操作,例如:
- JSON_ARRAY:创建一个 JSON 数组
- JSON_OBJECT:创建一个 JSON 对象
- JSON_EXTRACT:从 JSON 值中提取数据
- JSON_SET:插入或更新 JSON 数据
- JSON_REMOVE:从 JSON 数据中删除数据
--JSON_ARRAY 示例 SELECT JSON_ARRAY(1,2,'hello',true,false,NULL,'goodbye'); --JSON_OBJECT 示例 SELECT JSON_OBJECT('name', 'Bob', 'age', 25, 'married', true); --JSON_EXTRACT 示例 SELECT JSON_EXTRACT('{"name":"Bob", "age": 25}', '$.name'); --JSON_SET 示例 UPDATE pet SET info = JSON_SET(info, '$.owner', 'Mike') WHERE name = 'Tom'; --JSON_REMOVE 示例 UPDATE pet SET info = JSON_REMOVE(info, '$.owner') WHERE name = 'Tom';
尽管 JSON 数据类型是有用的,但它也有一些限制。JSON 数据类型只能在 MySQL 版本 5.7.8 及以上的版本中进行更改,而且不支持使用索引查询。
总的来说,JSON 数据类型是存储非结构化数据的好方式,因为它可以扩展到不同的级别并且不太容易受到数据格式的变化影响。