mysql json 类型_MySQL JSON数据类型

json据说是MySQL5.7新增数据类型,以下为学习笔记

1)创建使用json数据类型的表:

CREATE TABLE oper_log (

id INT NOT NULL AUTO_INCREMENT,

oper_name VARCHAR(30) NOT NULL,

oper_detail JSON DEFAULT NULL,#注意字段类型为json

PRIMARY KEY(id)

);

3caf392ee3d0f2046edc8f40f88d4395.png

2)插入数据

-- 插入含有json数组的记录

INSERT INTO oper_log(oper_name,oper_detail ) VALUES( 'admin', JSON_ARRAY(1, "course", NULL, TRUE, CURTIME()));

-- 插入含有json对象的记录

-- 可以使JSON_OBJECT()方法来创建json对象,方法内带有偶数个参数,一个键一个值得形式转换为json

INSERT INTO oper_log(oper_name,oper_detail ) VALUES( 'admin', JSON_OBJECT("course", "维修保养课程", "currentTime", now()));

-- 如果如下面向JSON_OBJECT()方法传入奇数个参数,会报错:Incorrect parameter count in the call to native function 'JSON_OBJECT'

INSERT INTO oper_log(oper_name,oper_detail ) VALUES( 'admin', JSON_OBJECT("course", "维修保养课程", "currentTime"));//错误的

-- 还可以使用json字符串的形式传入json对象

INSERT INTO oper_log(oper_name,oper_detail ) VALUES( 'admin', '{"course":"数据结构课程", "currentTime":"2018-010-1 14:01:00"}');

-- 一定要转换为字符串,如下直接传入对象,会报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"course":"数据结构课程", "currentTime":"2018-010-1 14:01:00"})' at line 1

INSERT INTO oper_log(oper_name,oper_detail ) VALUES( 'admin', {"course":"数据结构课程", "currentTime":"2018-010-1 14:01:00"}); //错误的

上面插入的数据:

87bb81fc1302437d2192e834dfa682c6.png

3)查询json中某个字段的值

SELECT id,JSON_EXTRACT(oper_detail,'$.course') as course FROM oper_log;

或:

SELECT id,oper_detail->'$.course' as course FROM oper_log;

b6143be62bcd06891872da1d56483a94.png

4)以json中的某个字段进行查询

SELECT * FROM oper_log WHERE JSON_EXTRACT(oper_detail,'$.course') LIKE '%2%';

92c9bdfb8c5fac17d9851e8cc0cc9a77.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值