【MySQL】 json类型的增删改查

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 【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;
效果如下:

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
10月前
|
存储 SQL 关系型数据库
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为'0'或'1',查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。
|
10月前
|
关系型数据库 MySQL Java
【YashanDB知识库】崖山BIT类型对MYSQL兼容问题
【YashanDB知识库】崖山BIT类型对MYSQL兼容问题
|
10月前
|
自然语言处理 关系型数据库 MySQL
MySQL索引有哪些类型?
● 普通索引:最基本的索引,没有任何限制。 ● 唯一索引:索引列的值必须唯一,但可以有空值。可以创建组合索引,则列值的组合必须唯一。 ● 主键索引:是特殊的唯一索引,不可以有空值,且表中只存在一个该值。 ● 组合索引:多列值组成一个索引,用于组合搜索,效率高于索引合并。 ● 全文索引:对文本的内容进行分词,进行搜索。
|
机器学习/深度学习 关系型数据库 MySQL
mysql bit对gorm使用何种类型?
在GORM中使用MySQL的BIT类型时,通常使用 `bool`类型来处理BIT(1),使用 `[]byte`类型来处理BIT(N)(N > 1)。通过正确的类型映射和位操作,可以高效地处理位字段数据。确保在定义结构体字段时,明确指定字段类型,以便GORM能够正确地处理数据库交互。
304 18
|
11月前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
569 12
|
11月前
|
存储 SQL 关系型数据库
【YashanDB 知识库】MySQL 迁移至崖山 char 类型数据自动补空格问题
问题分类】功能使用 【关键字】char,char(1) 【问题描述】MySQL 迁移至崖山环境,字段类型源端和目标端都为 char(2),但应用存储的数据为'0'、'1',此时崖山查询该表字段时会自动补充空格 【问题原因分析】mysql 有 sql_mode 控制,检查是否启用了 PAD_CHAR_TO_FULL_LENGTH SQL 模式。如果启用了这个模式,MySQL 才会保留 CHAR 类型字段的尾随空格,默认没有启动。 #查看sql_mode mysql> SHOW VARIABLES LIKE 'sql_mode'; 【解决/规避方法】与应用确认存储的数据,正确定义数据
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
301 20
|
存储 关系型数据库 MySQL
mysql怎么查询longblob类型数据的大小
通过本文的介绍,希望您能深入理解如何查询MySQL中 `LONG BLOB`类型数据的大小,并结合优化技术提升查询性能,以满足实际业务需求。
519 6
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
3916 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)

推荐镜像

更多