一架梯子,一头程序猿,仰望星空!
MYSQL基础面试题 > 内容正文

了解MYSQL JSON数据类型吗?相对于直接存储json字符串,它有什么优点?


问题简答

MySQL 5.7版本之后,开始支持JSON数据类型,比直接存储json字符串,它有下面优点:
1、灵活性:JSON数据类型支持存储不规则数据,MYSQL支持针对JSON数据类型读写的语法和函数,操作方便。
2、效率:与直接存储json字符串相比,使用JSON数据类型可以节省存储空间,同时也可以减少数据库操作的时间和开销,因为无需对数据进行转换,直接存储json字符串,还需要序列化和反序列化操作。

问题详解:

MySQL 8版本之后对JSON数据类型的支持就更加完善了,下面是JSON数据类型的使用例子

1.创建包含json类型字段的表

CREATE TABLE tizi365_table (
    id INT PRIMARY KEY,
    data JSON
);

2.插入JSON格式的数据

json类型字段,直接插入json字符串即可

INSERT INTO tizi365_table VALUES (1, '{"name":"John", "age":30, "city":"New York"}');

3.查询JSON格式的数据

SELECT data->'$.name' AS name, data->'$.age' AS age, data->'$.city' AS city
FROM tizi365_table
WHERE id=1;

MYSQL使用 -> 运算符来获取JSON对象中指定键的值,其中 $.name 表示JSON对象中的 name 键的值,$.age 表示 age 键的值,$.city 表示 city 键的值,嵌套json字段使用.连接即可。

4.更新JSON格式的数据

UPDATE tizi365_table SET data = JSON_SET(data, '$.city', 'Shanghai')
WHERE id=1;

使用 JSON_SET 函数更新JSON对象中指定键的值, $.city 表示需要更新的键名,Shanghai 表示需要更新的值。

5.删除JSON格式的数据

UPDATE tizi365_table SET data = JSON_REMOVE(data, '$.city')
WHERE id=1;

使用JSON_REMOVE函数删除$.city字段。