文章目录

  • 前言
  • 一、json格式
  • 二、开始使用
  • 1.创建表
  • 2.插入数据
  • 3.展示
  • 总结



前言

上一篇讲了下mysql8中的自带的递归函数,这次简单说下mysql8中的新支持的数据json格式使用;


一、json格式

没错,就是平时开发中的通用数据格式json ,其中在字段类型上,新增了一个,就是json

mysql8支持的json数据_创建表

二、开始使用

1.创建表

建表语句 :

CREATE TABLE `orders` (
  `order_id` int NOT NULL,
  `customer_name` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `order_date` date DEFAULT NULL,
  `order_items` json DEFAULT NULL,
  PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

2.插入数据

插入语句:

INSERT INTO `orders` VALUES (1, 'John', '2021-01-01', '{\"item1\": \"book\", \"item2\": \"pen\", \"item3\": \"pencil\"}');
INSERT INTO `orders` VALUES (2, 'Norn', '2021-01-01', '{\"item1\": {\"item1\": \"book2\", \"item2\": \"pe2n\", \"item3\": \"pencil2\"}, \"item2\": \"pe2n\", \"item3\": \"pencil2\"}');

3.展示

select * from orders where order_items ->>'$.item2' ='pen'
select * from orders where order_items ->>'$.item1.item2' ='pe2n'

也就是只要是json内容,里面的key可以继续作为查询条件, 继续点 调用就行了: $.item1.item2


总结

其实这个新增的类型json我们比较熟悉,如果熟悉java 其实用法也没有很稀奇;
如果你之前有了解过mongodb,那么你会觉得这是在模仿吧? 哈哈 $ …这些调用,简直就跟复制功能一样~~

  • 如果用json,其实可以解决一些常见的,就例如订单–订单详细之类的,就不用连表查询了,而且订单明细,基本不会再变动,类似这种数据,的确可以使用json格式优化;