MySQL 中 JSON 字符串的深入解析:揭开 JSON 查询的奥秘 (mysql中使用什么语句来更新表中的记录)
简介
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,它在 Web 开发中广泛用于传输数据。MySQL 从 5.7 版本开始支持 JSON 数据类型,允许用户将 JSON数据存储在数据库中。本文将深入探讨 MySQL 中 JSON 字符串,包括其存储结构、查询技术以及更新记录的语句。JSON 存储结构
MySQL 将 JSON 数据存储为一个单独的二进制格式。它使用一种称为 "JSON 文档" 的内部结构,该结构包含 JSON 字符串中的所有键值对。JSON 文档是一个键值对的有序集合,其中键是字符串,值可以是字符串、数字、布尔值或 JSON 数组。JSON 查询技术
MySQL 提供了多种方法来查询 JSON 数据,包括:JSON_EXTRACT() 函数:从 JSON 字符串中提取特定值。JSON_SEARCH() 函数:在 JSON 字符串中搜索特定值或模式。JSON_VALUE() 函数:从 JSON 字符串中返回指定路径的值。JSON_QUERY() 函数:使用 JSONPath 表达式从 JSON 字符串中查询数据。更新记录中的 JSON 字符串
有两种主要方法可以在 MySQL 中更新表中记录中的 JSON 字符串:使用 JSON_SET() 函数:该函数允许您修改 JSON 字符串中的特定值。使用 JSON_REPLACE() 函数:该函数替换整个 JSON 字符串。使用 JSON_SET() 函数更新记录中的 JSON 字符串 sql UPDATE table_name SET json_column = JSON_SET(json_column, '$.key', 'new_value') WHERE id = 1;此语句将更新表 `table_name` 中 `id` 为 `1` 的记录中的 `json_column` 列。它将 `$.key` 路径下的值更新为 `new_value`。使用 JSON_REPLACE() 函数更新记录中的 JSON 字符串 sql UPDATE table_name SET json_column = JSON_REPLACE(json_column, '$.key', 'new_value') WHERE id = 1;此语句将更新表 `table_name` 中 `id` 为 `1` 的记录中的 `json_column` 列。它将 `$.key` 路径下的所有值替换为 `new_value`。示例
假设我们有一个名为 `employees` 的表,其中包含一个名为 `json_data` 的 JSON 列。该列存储了每个员工的个人信息,如下所示: json {"name": "John Doe","age": 30,"address": {"street": "Main Street","city": "New York","state": "NY"} }使用 JSON_EXTRACT() 函数提取员工的姓名 sql SELECT JSON_EXTRACT(json_data, '$.name') FROM employees WHERE id = 1;此查询将返回员工的姓名,即 "John Doe"。使用 JSON_SEARCH() 函数搜索员工的年龄 sql SELECT JSON_SEARCH(json_data, 'one', '$.age') FROM employees WHERE id = 1;此查询将返回员工的年龄,即 "30"。使用 JSON_VALUE() 函数获取员工地址的街道 sql SELECT JSON_VALUE(json_data, '$.address.street') FROM employees WHERE id = 1;此查询将返回员工地址的街道,即 "Main Street"。使用 JSON_QUERY() 函数查询员工的信息 sql SELECT JSON_QUERY(json_data, '$..name') AS name,JSON_QUERY(json_data, '$..age') AS age,JSON_QUERY(json_data, '$..address.city') AS city FROM employees WHERE id = 1;此查询将返回员工的信息,包括姓名、年龄和地址的城市。使用 JSON_SET() 函数更新员工的姓名 sql UPDATE employees SET json_data = JSON_SET(json_data, 'mysql json字符串查询
注意一:字段类型为varchar、char、text等字符类型注意二:内容为json 注意三:mysql服务器版本为5.7及以上 语法:select * from 表名 where字段->$.属性=查询内容; select * from table1 wherecol1->$=xiaoming;
mysql 5.7 json 增删改查怎么写
mySQL中的JSON操作
创建单个json数组
创建单个对象,并返回该对象
将其他类型的值转换成JSON类型来获取json值
将 json 值作为参数传入,如果值有效,则返回其 json 类型,否则报错
将两个或多个 json 值合并为一个 json 并返回最终值
合并两个或多个 json 值,但不合并重复键的值,如果出现重复键,仅保留最后一个的值
经过函数转换得到的 json 是区分大小写的,原因在于转换后的字符集格式为 utf8mb4 和 utf8mb4_bin ,因为 utf8mb4_bin 是二进制排序规则,所以区分大小写
因为区分大小写,所以 json 中的 null 、true 和 false 都必须用小写字母编写
直接插入键值对语句和用 JSON_OBJECT 转换成json值存入的差别在于,前者需要双反斜杠转义字符,而后者只需要单反斜杠转义字符
当需要存储的内容如下
使用直接插入的方法时:
使用 JSON_OBJECT 时
案例
因为 $[1] 和 $[2] 计算为非标量值, 所以它们可以用作选择嵌套值的更具体的路径表达式的基础。例子:
结合 JSON_SET``JSON_INSERT``JSON_REPLACE``JSON_REMOVE 的使用
JSON_SET 替换存在的路径的值, 并为不存在的路径添加值
JSON_INSERT 添加新值, 但不替换现有值:
JSON_REPLACE 替换现有值并忽略新值:
JSON_REMOVE 使用一个或多个路径, 这些路径指定要从文档中删除的值。返回值是原始文档减去由文档中存在的路径选择的值:
若对本页面资源感兴趣,请点击下方或右方图片,注册登录后
搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源
如有其他疑问,请咨询右下角【在线客服】,谢谢支持!
相关文章
- 铸造传世武器:打造暗黑破坏神4中毁灭性的神兵 (铸造传世武器有哪些)
- 击破地狱之门:暗黑破坏神4中与恶魔军团的终极对抗 (击破地狱之门攻略)
- 踏入圣庇护所:暗黑破坏神4中宏伟世界的冒险 (圣庇护一世)
- 征服黑暗:探索暗黑破坏神4中邪恶的国度 (征服黑暗作文)
- 召唤暗黑力量:释放暗黑破坏神4中潜藏的恶魔之力 (召唤暗黑力量的小说)
- 重返庇护之地:暗黑破坏神4中的混沌与毁灭之旅 (重返庇护之地不朽)
- 揭开暗黑破坏神4的黑暗奥秘:一场史诗般的战斗 (揭开暗黑破坏神的秘密)
- 迅雷5官方下载手机版,轻松管理下载,畅快无阻 (迅雷5下载手机版安卓版下载)
- 高速下载,稳定可靠,迅雷5手机版让你告别下载卡顿 (高速网络下载)
- 手机版迅雷5,下载速度提升,畅享无限制下载 (手机版迅雷找不到合适的应用打开)
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~