【MySQL】 json类型的增删改查

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 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;
效果如下:

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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
15天前
|
机器学习/深度学习 关系型数据库 MySQL
mysql bit对gorm使用何种类型?
在GORM中使用MySQL的BIT类型时,通常使用 `bool`类型来处理BIT(1),使用 `[]byte`类型来处理BIT(N)(N > 1)。通过正确的类型映射和位操作,可以高效地处理位字段数据。确保在定义结构体字段时,明确指定字段类型,以便GORM能够正确地处理数据库交互。
28 18
|
2月前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
88 12
|
2月前
|
存储 关系型数据库 MySQL
mysql怎么查询longblob类型数据的大小
通过本文的介绍,希望您能深入理解如何查询MySQL中 `LONG BLOB`类型数据的大小,并结合优化技术提升查询性能,以满足实际业务需求。
150 6
|
3月前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
94 20
|
3月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
68 4
|
3月前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
78 8
|
4月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
669 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
4月前
|
关系型数据库 MySQL
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
这篇文章介绍了如何在DBeaver中创建MySQL表的枚举(ENUM)字段,并探讨了MySQL中ENUM类型的一些行为特点,例如ENUM值的默认排序和在插入重复值时的表现。
77 1
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
|
4月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
86 1