Live2D

MySQL5.7中使用JSON

一、简介

因为项目需要,存储字段存储成了JSON格式,MySQL5.7开始就原生支持JSON了。

二、创建表

CREATE TABLE `user` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `info` json DEFAULT NULL, #注意desc字段类型为json
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

在MySQL5.7后,多了一个字段类型:json

原生的JSON优势如下:

1.存储上类似text,可以丰非常大的数据。

2.JSON有效性检查:插入的数据必须是JSON类型的字符串才行。

3.相比于传统形式,不需要遍历所有字符串才能找到数据。

4.支持索引:通过虚拟列的功能可以对JSON中部分的数据进行索引。

三、使用

1.插入SQL语句,注意info字段必须要是json类型,否则插入失败

INSERT  INTO `user`(`uid`,`info`) VALUES (1,'{\"mail\": \"jiangchengyao@gmail.com\", \"name\": \"David\", \"address\": \"Shangahai\"}'),(2,'{\"mail\": \"amy@gmail.com\", \"name\": \"Amy\"}');

2.简单查询

SELECT uid,json_extract(info,'$.mail') AS 'mail',json_extract(info,'$.name') AS 'name' FROM USER;

结果是:

 

 四、说明

对于某一列是json而言,需要使用内置的函数json_extract(列名, '$.key')这个函数有2个参数,第一个参数是json列的列名,第二个参数$.key其中key为json字符串中某一个key。

posted @ 2020-09-11 09:00  骑着螞蟻流浪  阅读(1553)  评论(0编辑  收藏  举报