前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转mysql的json类型

玩转mysql的json类型

作者头像
翟凤玺
发布2020-10-29 11:06:41
1.2K0
发布2020-10-29 11:06:41
举报
文章被收录于专栏:翟凤玺

导读

  • mysql在5.7版本之后出了一个json类型字段,方便存储不规则字段,常用为表单的业务字段,原先mysql加个业务字段需要修改表结构。通过json字段则不需要。

例子

  • 没有json类型

字段

解释

id

主键

name

姓名

age

年龄

address

地址

phone

电话

isDel

是否删除

  • 运用json类型

字段

解释

id

主键

user_json

用户json {“name”:“翟”,“age”:“26”…}

isDel

是否删除

代码语言:javascript
复制
如果用户增加删除一个字段,json更加灵活,不需要修改表结构,只存业务字段。

常见使用技巧

查询函数

  • JSON_EXTRACT 查询
  • JSON_UNQUOTE 去除JSON查询结果所带的双引号

实例

代码语言:javascript
复制
 {
     "name":"翟",
     "age":"26",
     "phone": ["13920597981","15122511111"]
     "city": {
         "code":"999",
         "name":"天津"
     }
 }
查询 姓名
  • 方式一
代码语言:javascript
复制
SELECT JSON_UNQUOTE(JSON_EXTRACT(user_json,'$.name')) FROM table;
  • 方式二
代码语言:javascript
复制
SELECT user_json -> '$.name' FROM table;
查询 姓名 去掉 双引号
代码语言:javascript
复制
SELECT user_json ->> '$.name' FROM table;
查询第一个手机号
代码语言:javascript
复制
SELECT user_json -> '$.phone[0]' FROM table;
查询城市编码
代码语言:javascript
复制
SELECT user_json -> '$.city.code' FROM table;

实例2

代码语言:javascript
复制
[
    {
        "name":"呼呼",
    },{
        "name":"哈哈",
    }
]

查询 第一个姓名

代码语言:javascript
复制
SELECT user_json -> '$[0].name' FROM table;

查询 姓名 包含 翟

代码语言:javascript
复制
SELECT * FROM table WHERE demo_json -> '$.name' LIKE "%翟%" ;

查询 姓名 叫 翟胖胖

代码语言:javascript
复制
SELECT * FROM table WHERE demo_json -> '$.name' = "翟胖胖" ;

查询 姓名 叫 翟胖胖 年龄 26岁

代码语言:javascript
复制
SELECT * FROM table WHERE demo_json -> '$.name' = "翟胖胖"  AND demo_json -> '$.age' = "26"

查询 年龄为26岁

代码语言:javascript
复制
SELECT JSON_CONTAINS(user_json,'"26"','$.age') FROM table

修改 年龄为10岁的数据 变为 100岁

代码语言:javascript
复制
update demo set demo_json = json_set(demo_json,"$.age",100) where demo_json -> '$.age' = 10

修改数组 手机号

代码语言:javascript
复制
 update demo set demo_json = json_set(demo_json,"$.phone",JSON_ARRAY(13920597980,15822688571))

在java中的使用

  • 可以通过fastJson很方便的操作json对象。

思考

  • 如果百万级数据量,这种方式查询效率会比较低,因为没办法加索引,最好是表结构增加一列用于查询。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
  • 例子
  • 常见使用技巧
    • 查询函数
      • 实例
        • 查询 姓名
        • 查询 姓名 去掉 双引号
        • 查询第一个手机号
        • 查询城市编码
      • 实例2
        • 查询 第一个姓名
          • 查询 姓名 包含 翟
            • 查询 姓名 叫 翟胖胖
              • 查询 姓名 叫 翟胖胖 年龄 26岁
                • 查询 年龄为26岁
                  • 修改 年龄为10岁的数据 变为 100岁
                    • 修改数组 手机号
                      • 在java中的使用
                      • 思考
                      相关产品与服务
                      云数据库 SQL Server
                      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档