Json
简介
json是一种轻量级的数据交换格式,全程为javaScript Object Notation (javaScript对象表示法)。它以易于阅读和编写的文本格式来表示结构化数据,常用于web应用程序之间的数据传输。
json由键值对组成:
- 对象(Object):用花括号{}表示一个对象,对象由多个键值对组成,键值对之间用逗号分隔。
对象,hashmap
对象: 属性:值
hashMap:键:值
- 数组(Array):用方括号[]表示一个数组,数组是由多个值组成,值之间用逗号分隔
操作
1 创建json字段
2.插入数据
- 数组:json_array(值1,值2,…)
- 对象:json_object(键1,值1,键2,值2)
insert into class values(0,‘张三’,json_array(‘游泳’,‘骑车’),json_object(‘name’,‘李四’,‘age’,19))
3.查询
- json_extract(字段名,“$.name”)
- ->:字段名->“$.name”
- json_keys(字段) 查询name
SELECT id,name,hobby,JSON_EXTRACT(nameb,‘$.name’) from class;
SELECT id,name,hobby,nameb->‘$.name’ from class;
select JSON_KEYS(nameb) from class
修改
- json_set(“字段”,“$.key”,值)
update class set nameb=json_set(nameb,“$.name”,“小红”)where id = 1
update class set nameb=json_set(nameb,“$.age”,“79”)where id = 4
update class set
nameb=json_remove(nameb,“$.age”)where id = 5
(remove是删除)
5.函数搜索
- json_contalns(字段,值)
- json_contalns(字段,值, ‘$.key’)
select * FROM class WHERE JSON_CONTAINS(hobby,‘“骑车”’);
select * FROM class WHERE JSON_CONTAINS(nameb,‘“小红”’,‘$.name’)
注意: 值需要另外加引号,否则报错。
视图
使法
1.创建
- 格式
create view v1_class as (select * from class)
create view v2_class as (select id,name,hobby from class)
create view v3_class(username,hobb) as (select name,hobby from class)
create view v4_class as (select id,name,hobby from class WHERE JSON_CONTAINS(hobby,‘“看书”’ ));
2.查看
- 可以在navicat直接查看
3.修改
- create or replace view 视图名称 as sql语句
CREATE OR REPLACE VIEW v5_class(nameds,hobbys) AS (SELECT name,hobby FROM class )
select * from pv1
- alter view 视图名称 as sql语句
alter view v5_class(nameds) as(select name from class)
4.插入数据
和普通表插入的格式一样,但是视图改变也会将影响原来的表
insert into 视图名 () vlues ()
insert into v5_class(nameds) values (‘小明’)
5.删除数据
和普通表删除数据做法一样
delete from 视图名 where 条件
delete from v5_class where nameds=‘小明’
存储过程
案例
delimiter//
CREATE PROCEDURE class2(IN student_id INT,OUT student_name VARCHAR(255))
BEGIN
SELECT name
INTO student_name FROM student WHERE id = student_id;
END//
delimiter;
调用存储过程,并将结果保存到@name变量中
CALL class2(10,@name);
查看存储过程返回的结果
SELECT @name;
SHOW PROCEDURE STATUS WHERE db = ‘xinzhi666’;
SHOW CREATE PROCEDURE class2