前言,类型必须是json,虽然text也可以,但是很多操作没法使用,比如查询,当然了,这种类型还可以存储数组
类似 varchar,设置 JSON 主要将字段的 type 是 json, 不能设置长度,可以是 NULL 但不能有默认值。

总结

分类 函数 描述
创建json
json_array 创建json数组
json_object 创建json对象
查询json
json_contains 判断是否包含某个json值
column->>path json_unquote(column -> path)的简洁写法
json_keys 提取json中的键值为json数组
json_search 按给定字符串关键字搜索json,返回匹配的路径
修改json
json_array_append 末尾添加数组元素,如果原有值是数值或json对 象,则转成数组后,再添加元素
json_array_insert 插入数组元素
json_insert 插入值(插入新值,但不替换已经存在的旧值)
json_merge 合并json数组或对象
json_remove 删除json数据
json_replace 替换值(只替换已经存在的旧值)
json_set 设置值(替换旧值,并插入不存在的新值)
json_unquote 去除json字符串的引号,将值转成string类型
返回json属性
json_depth 返回json文档的最大深度
json_length 返回json文档的长度
json_type 返回json值得类型
json_valid 判断是否为合法json文档
参考

就是插入 json 格式的字符串,可以是对象的形式,也可以是数组的形式

INSERT INTO `a_goods` (`type`, `attrs`)
VALUES ('["新品","热销",1,"0"]','{"name":"张三","age":20,"strage":"20","data":[1,"0"]}')

MySQL 也有专门的函数 JSON_OBJECTJSON_ARRAY 生成 json 格式的数据,但是吧,使用的时候有注意点,尽量之间写进去吧

 //JSON_OBJECT必须是偶数,嵌套时必须搭配JSON_ARRAYINSERT INTO `a_goods` (`attrs`, `type`) VALUES (JSON_OBJECT("name","张三","age",20,"strage","20","data",JSON_ARRAY("新品","热销",1,"0")), JSON_ARRAY("新品","热销",1,"0"))

查询

一般对应字符串类型的 category->’$.name’ 中还包含着双引号,这其实并不是想要的结果,可以用 JSON_UNQUOTE 函数将双引号去掉,从 MySQL 5.7.13 起也可以通过这个操作符 * ->> *这个和 JSON_UNQUOTE 是等价的

查询json的值,即键的值

SELECT attrs->'$.name' as name, JSON_UNQUOTE(attrs->'$.name'), attrs->>'$.name' FROM a_goods
/*SELECT attrs->'$.name' as name,    查询json数据中的name的值并赋值给nameJSON_UNQUOTE(attrs->'$.name'),attrs->>'$.name' FROM a_goods
*/

json中的where 语句


SELECT * FROM a_goods WHERE type = CAST('["新品","热销",1,"0"]' as JSON)
//查询json是否在数据库的存在,其实就相当于 `where a=1` 只不过这个a得转换一下
//CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型
SELECT * FROM a_goods WHERE attrs->>'$.age' = '20'
//要特别注意的是,JSON 中的元素搜索是严格区分变量类型的,比如说整型和字符串是严格区分的,即 “20”和20
SELECT * FROM a_goods WHERE JSON_CONTAINS(attrs, '20', '$.age')
SELECT * FROM a_goods WHERE JSON_CONTAINS(type, '"新品"')
//用JSON_CONTAINS 函数,但和 *column->path *的形式有点相反的是,JSON_CONTAINS 第二个参数是不接受整数的,无论 json 元素是整型还是字符串,否则会出现错误

更新

更新数组按以往的更新就行

 UPDATE a_goods SET type = '["demo","0",1]'

但如果要更新 JSON 下的元素,MySQL 并不支持 *column->path *的形式,则可能要用到以下几个函数

JSON_INSERT() 插入新值,但不会覆盖已经存在的值

 UPDATE a_goods SET category = JSON_INSERT(category, '$.name', 'lnmp', '$.url', 'www.lnmp.cn') WHERE id = 1;

JSON_SET() 插入新值,并覆盖已经存在的值

UPDATE a_goods SET category = JSON_SET(category, '$.host', 'www.lnmp.cn', '$.url', 'http://www.lnmp.cn') WHERE id = 1;

JSON_REPLACE() 只替换存在的值

UPDATE a_goods SET category = JSON_REPLACE(category, '$.name', 'php', '$.url', 'http://www.php.net') WHERE i

JSON_REMOVE() 删除 JSON 元素

UPDATE a_goods SET category = JSON_REMOVE(category, '$.url', '$.host') WHERE id = 1;

mysql操作--json/数组 的增删该查相关推荐

  1. MySQL操作JSON

    MySQL操作JSON 总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我们的很多基于mongo ...

  2. java中的数组增删查改操作,java数组实现增删改查

    java 实现动态数组,Java工具类Arrays中不得不知的常用方法,数组实现队列java,java数组实现增删改查 java 增删改查代码 import java.sql.Connection; ...

  3. mysql操作json优点和缺点_SQL-mysql操作json

    一 前言 MySQL 5.7.8 之后 支持 JSON (由rfc7159规定)数据类型,其能在字段中使用json 类型,做到了自动校验是否为json类型数据,否则插入数据会报异常:其次,储存json ...

  4. mysql操作json优点和缺点_详解Mysql中的JSON系列操作函数

    前言 JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写.对机器来说易于解析和生成,并且会减少网络带宽的传输. JSON的格式非常简单:名称/ ...

  5. mysql解析json/数组

    tb1.theColumnName->'$.jsonkey' as columnName ==================================================== ...

  6. JavaScript Array function 常见操作json 数组

    JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(20); / ...

  7. mysql操作json优点和缺点_MYSQL 5.7中的本机JSON支持:MYSQL中JSON数据类型的优缺点是什么?...

    在MySQL 5.7中,新的数据类型用于在JSON表中存储JSON数据. 添加. 显然,这将是MySQL的巨大变化. 他们列出了一些好处 Document Validation - Only vali ...

  8. MySQL 判断 JSON 数组是否相等

    文章目录 1.问题 2.使用 JSON_CONTAINS 与 JSON_LENGTH 参考文献 1.问题 JSON(JavaScript Object Notation)是流行的互联网应用服务之间的数 ...

  9. Java操作Json数组

    一.字符串与json 字符串格式: static String json = "[{'day1':'work','day2':26},{'day1':123,'day2':26}]" ...

  10. mysql 展开json 数组格式数据

    正常Json数组是存放多个数据的,如果需要拆分开来使用,可以用如下公式 SELECT* FROMpas_func_v2,JSON_TABLE ( func_atom, "$[*]" ...

最新文章

  1. 关于捕获键盘信息的processDialogkey方法
  2. 关于安装VS2010过程中的错误
  3. 成功当选2014年度MVP
  4. silverlight ListBox 多列图片效果
  5. oracle数据库分层,Oracle数据库的分层查询(一)
  6. 《朝花夕拾》金句摘抄(三)
  7. 如何用Excel快速生成SQL语句,用过的人都说好
  8. osip和mysql_osip2和eXosip2协议
  9. 【Qt串口调试助手】1.0 - 400行代码撸一个Qt5串口调试助手框架
  10. const 成员函数
  11. android混合编程 pdf,混合编程在A/D转换中的应用.pdf
  12. 利用VBA批量保护/撤销EXCEL表
  13. python 移动文件 覆盖_Python操作文件(删除、复制、移动...)
  14. 全国各省市区县数据整理
  15. 自定义控件之仿电话簿汉字排序侧边拼音
  16. JavaScript系列(2)内置对象:Date
  17. 在最美的时候,你遇见了谁?
  18. 全世界公认最美的经典爱情句子
  19. Bean是如何创建的?
  20. uoni扫地机器人好用吗_扫地机器人好用吗?扫盲选购看这篇

热门文章

  1. 使用java语言实现将10进制转化为2进制
  2. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录
  3. 转 Android adb root权限
  4. 拓端tecdat|约会数据动态可视化分析:R语言使用ggplot和ganimate制作的动画图
  5. 拓端tecdat|Tableau 数据可视化:探索性图形分析新生儿死亡率数据
  6. Linux-eval命令
  7. (1)Matplotlib_xticks, yticks
  8. java jxls_jxls教程
  9. Caffe傻瓜系列(10):draw_net.py绘制caffe net结构
  10. 如何手动优化机器学习模型超参数