Json

mysql之json应用

json
json 是什么
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

	数组[]
	对象{}
	key:value

	var user = {name:lisi,age:18,score:[80,90,30,20]} json对象

	user.name
	user.age
	user.score[0]


	json string integer double object array null boolean

	json_type('"hello"');  STRING

	
	select '["java",10,true,false,{},[],null]'

	select json_type('["java",10,true,false,{},[],null]'),json_type('{}');
	select json_type('"hello"'),json_type('18.0'),json_type('true');

	-- 将多个元素转换为一个json数组字符串对象
	select json_array(1,2,3,4,6,7,10);  --   '[1,2,3,4,6,7,10]'


	-- {"age": 18, "name": "lisi", "address": "郑州"}
	-- {"age": 18, "name": "lisi", "address": "郑州", "isStudent": true}
	select json_object('name','lisi','age',18,'address','郑州','isStudent',true);


	set @jj = json_object('name','lisi','age',18,'address','郑州','isStudent',true);
	select @jj;
	select json_extract(@jj,'$.address');



	json_set()  向json中插入数据,有的覆盖,没有的插入

	json_insert() 向json中插入数据,有的无视,没有的要插入

	json_replace() 向json中替换数据,有的替换,没有无视

	json_remove() 删除值

	json_length() 返回元素个数


	set @jj = json_object('name','lisi','age',18,'address','郑州','isStudent',true);
	select @jj;
	select json_extract(@jj,'$.address');

	select json_set('"x"','$[0]','abc');

	-- 在数据库判断等不等,是一个等号1 就是true 0就是false
	select 2=3;
	select json_object('name','lisi','age',18) = json_object('age',18,'name','lisi');

	set @aa = '{"age":10,"lang":["java","php"]}';
	-- OBJECT
	select  json_type(@aa);
	select @aa;
	select json_set(@aa,'$.age',1000,'$.love','[true,false]');
	select json_insert(@aa,'$.age',1000,'$.love','[true,false]');

	select json_replace(@aa,'$.age',1000,'$.love','[true,false]');

	-- 删除值
	select json_remove(@aa,'$.lang');


	创建表
	CREATE TABLE t_json(id INT PRIMARY KEY, NAME VARCHAR(20) , info  JSON);
	 
	插入记录
	INSERT INTO t_json(id,sname,info) VALUES(1 ,'test','{"time":"2017-01-01 13:00:00","ip":"192.168.1.1","result":"fail"}');
	INSERT INTO t_json(id,sname,info)  VALUES(2 ,'my',JSON_OBJECT("time",NOW(),'ip','192.168.1.1','result','fail'));
	 
	查询IP键
	SELECT sname,JSON_EXTRACT(info,'$.ip') FROM t_json;
	查询有多少个键
	SELECT id,json_keys(info) AS "keys" FROM t_json;
	 
	 
	删除键
	UPDATE t_json SET info = json_remove(info,'$.ip');
	增加键
	UPDATE t_json SET info = json_set(info,'$.ip','192.168.1.1');
	变更值
	UPDATE t_json SET info = json_set(info,'$.ip','192.168.1.2');


	实例操作代码
            -------------------------------------------------------------------
			create table myj(
			    id int unsigned auto_increment primary key,
			    name varchar(10),
			    books json
			)

			insert into myj values(null,'jack',null);
			select * from myj;

			update myj set name = 'lisi';
			update myj set books = '{"id":10,"name":"《java实战》","price":80.6}';
			select * from myj;

			-- 查询
			select id 编号,name 姓名,json_unquote(json_extract(books,'$.name')) 书籍名称 from myj;

			-- json_set() json_insert() json_replace()
			-- select * from myj;
			-- 修改
			update myj set books = json_replace(books,'$.name','《java项目实战教程》','$.price',100);

			-- 删除指定部分
			update myj set books = json_remove(books,'$.price');

你可能感兴趣的:(小项目,json)