1、Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JSON类型数据,可以将一个字段设定成varchar类型,里面存放JSON格式数据,这样在需要扩展字段时,不需要修改表结构;
2、mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的优点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据时,还是比较别扭的。
创建JSON
类似 varchar,设置 JSON 主要将字段的 type 是 json, 不能设置长度,可以是 NULL 但不能有默认值
CREATE TABLE muscleape
(
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
category JSON,
tags JSON,
PRIMARY KEY (id)
);
DESC muscleape;
Field
type
Null
Key
Default
Extra
id
tinyint(3)
unsigned
NO
PRI
auto_increment
category
json
YES
""
""
tags
json
YES
""
""
插如JSON数据
1、插入 json 格式的字符串,可以是对象的形式,也可以是数组的形式;
2、可以使用JSON_OBJECT、JSON_ARRAY函数生成;(其他JSON函数:https://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html)
-- 直接插入字符串
INSERT INTO muscleape (category, tags) VALUES ('{"id": 1,"name": "muscleape"}','[1,2,3]');
-- 使用JSON函数
INSERT INTO muscleape (category, tags) VALUES (JSON_OBJECT("id",2,"name","muscleape_q"),JSON_ARRAY(1,3,5));
--
添加的数据如下:
SELECT * FROM muscleape;
id
category
tags
1
<