【MySQL】 json类型的增删改查

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【MySQL】 json类型的增删改查


json是一种特殊字符串,轻量级的数据格式,不程序不同语言数据交换格式。
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
mysql 从5.7开始增加了json新的数据类型,此类型非常灵活。

目录

json对象的操作
首先建一个有json类型的表

create table db1.t5(

id int not null auto_increment primary key ,
obj json

)engine=innodb default charset =utf8 auto_increment=202202;
这里我们可以看到obj字段的类型是json

-- json_object返回一个对象 json中{}大括号也是对象的意思 两种方式都行 注意两种方式存对象的具体写法
insert into db1.t5 values (null,json_object('name','张三','gender','男','age',18));
insert into db1.t5 value (null,json_object('name','李四','gender','男','age',21));
insert into db1.t5 value (null,json_object('name','王五','gender','女','age',21));
insert into db1.t5 value (null,'{"name":"马六","gender":"女","age":22}');
insert into db1.t5 value (null,'{"name":"赵七","gender":"女","age":18}');
insert into db1.t5 value (null,'{"name":"周八","gender":"男","age":22}');
看看存入数据库里的内容

存好了json对象接下来开始查询

-- json_extract(字段名,'$.属性名')查询
-- 这种方式显示出来有双引号
-- 拉姆达表达式中obj->'$.name'显示的为有双引号,obj->>'$.name'显示的没有
select json_extract(obj,'$.name','$.age') from db1.t5;
-- 查询年龄为22的人
-- 方式一
select * from db1.t5 where json_extract(obj,'$.age')=22;
-- 方式二 拉姆达表达式
select * from db1.t5 where obj->'$.age'=21;
效果:

 按年龄查询效果:

json_set(对象名,'$.属性名','值') 用于修改或插入属性值

-- json_set(对象名,'$.属性名','值') 用于修改或插入属性值
update db1.t5 set obj= (json_set(obj,'$.name','卸甲','$.age',18,'$.address','中国')) where id=202205;
效果如下:

 json_remove(字段名,'$.属性')  用于删除属性

-- json_remove(字段名,'$.属性') 用于删除属性
update db1.t5 set obj=(json_remove(obj,'$.gender'))where id=202205;
效果如下:

 json类型数组的操作:
新建一个表:

create table db1.t6(

                   id int not null auto_increment primary key ,
                   arr json

)engine=innodb default charset =utf8 auto_increment=20220201;
插入数据并查询:

insert into db1.t6 value (null,json_object('name','陈卸甲','myarr',json_array(10,'java',100,200)));
select * from db1.t6;
-- 数组索引从0开始
select arr->>'$.myarr[1]',arr->>'$.name' from db1.t6 where id=20220201;
效果如下:

 其他的增删改查跟上面的一样

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
26天前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
32 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
1月前
|
关系型数据库 MySQL
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
这篇文章介绍了如何在DBeaver中创建MySQL表的枚举(ENUM)字段,并探讨了MySQL中ENUM类型的一些行为特点,例如ENUM值的默认排序和在插入重复值时的表现。
37 1
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
|
26天前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
55 1
|
29天前
|
关系型数据库 MySQL
MySQL表的增删改查(基础篇详细详解)
MySQL表的增删改查(基础篇详细详解)
33 5
|
7天前
|
JSON 关系型数据库 MySQL
MySQL JSON数据存储结构与操作
通过本文的介绍,我们了解了MySQL中JSON数据类型的基本操作、常用JSON函数、以及如何通过索引和优化来提高查询性能。JSON数据类型为存储和操作结构化数据提供了灵活性和便利性,在现代数据库应用中具有广泛的应用前景。希望本文对您在MySQL中使用JSON数据类型有所帮助。
21 0
|
9天前
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
19 0
|
1月前
|
关系型数据库 MySQL 数据库
mysql的增删改查
本文介绍了MySQL数据库中进行增删改查操作的基本语法和注意事项,包括如何添加、修改和删除数据。
36 2
|
2月前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
115 4
|
2月前
|
自然语言处理 算法 Java
Java如何判断两句话的相似度类型MySQL的match
【9月更文挑战第1天】Java如何判断两句话的相似度类型MySQL的match
25 2