数据库中用JSON数据存储

1 创建数据库

复制代码
CREATE TABLE test (
    data JSON
);

1 插入JSON数据的方法

(1)

复制代码
INSERT INTO test (data) VALUES ('{"name":"李明","age":12}');

(2)

复制代码
INSERT INTO test (data) VALUES (JSON_OBJECT('name','lisi','age',54));

(3) 插入数组

复制代码
INSERT INTO test (data) VALUES (JSON_OBJECT('name','lisi','age',54, 'hobby', JSON_ARRAY('旅行', '散步')));

2 查询JSON数据的方法

(1) 查询数据

复制代码
select JSON_EXTRACT(data,'$.age') from test

(2) 查询数组

<1> 查询单个

复制代码
select data->'$.hobby' from test

select JSON_EXTRACT(data,'$.hobby[1]') from test

如果查询出来的数据不想要双引号 可以用下面的形式

复制代码
select data->>'$.name' from test

<2> 查询多个

复制代码
select JSON_EXTRACT(data,'$.hobby[0 to 1]') from test

(3)查询是否存在

复制代码
select * from test where JSON_CONTAINS(data,JSON_OBJECT('name','lisi'))

(4) 只含有一个键就返回数据/全部含有就返回数据

复制代码
select * from test where JSON_CONTAINS_path(data,'one','$.hobby','$.name')

select * from test where JSON_CONTAINS_path(data,'all','$.hobby','$.name')

(5) 只要含有一个相关数据 返回它的key

复制代码
select JSON_SEARCH(data,'one','旅行') from test

3 修改JSON数据的方法

(1) 更新

复制代码
UPDATE test
SET data = JSON_SET(data, '$.hobby[0]', '吃饭')
WHERE id = 4;

(2) 增加(在原有JSON数据中)

复制代码
UPDATE test
SET data = JSON_INSERT(data, '$.hobby[2]', '看电影','$.gender','男')
WHERE id = 4;

(3) 替换

复制代码
UPDATE test
SET data = JSON_REPLACE(data, '$.hobby[2]', '休息')
WHERE id = 4;

(4) 移除

复制代码
UPDATE test
SET data = JSON_REMOVE(data, '$.name')
WHERE id = 4;
相关推荐
weixin_441455262 分钟前
Mysql MVCC
数据库·mysql
一只小风华~9 分钟前
Vue Router 导航守卫
java·前端·javascript·vue.js·笔记·html
Cg1362691597422 分钟前
封装的实现和定义
java·开发语言
wxin_VXbishe22 分钟前
基于SpringBoot的天天商城管理系统的设计与现-计算机毕业设计源码79506
java·c++·spring boot·python·spring·django·php
Su-RE24 分钟前
【ElasticSearch】text 和 keyword 类型区分
java·数据库·elasticsearch
武子康27 分钟前
Java-146 深入浅出 MongoDB 数据插入、批量写入、BSON 格式与逻辑查询and or not操作指南
java·开发语言·数据库·sql·mongodb·性能优化·nosql
虎子_layor32 分钟前
从0到1学习泛型
java
奥尔特星云大使34 分钟前
MySQL快速构建主从(基于GTID)
数据库·mysql·主从复制
小园子的小菜36 分钟前
MySQL ORDER BY 深度解析:索引排序规则与关键配置参数阈值
数据库·mysql
wxjlkh38 分钟前
Oracle Exadata一体机简介 1千多个W
数据库·oracle