目录
Json
一 简介
什么是JSON?
JSON是一种轻量级的数据交换格式,全称为JavaScript Object Notation(JavaScript对象表示法)。它以易于阅读和编写的文本格式来表示结构化数据,常用于Web应用程序之间的数据传输。
<font color='orange'> JSON由键值对组成 </font>:
-
对象(Object):用花括号
{}
表示一个对象,对象由多个键值对组成,键值对之间用逗号分隔。
{ "key1": "value1", "key2": "value2", "key3": "value3" }
-
数组(Array):用方括号
[]
表示一个数组,数组是由多个值组成,值之间用逗号分隔。
["value1", "value2", "value3"]
二 操作
1 创建json字段
2 插入数据
-
数组:json_array(值1,值2,...)
-
对象:json_object(键1,值1,键2,值2)
insert into person values (0,"老韩",json_array("听歌","游戏"),json_object("name","老孙"))
3 查询
-
json_extract(字段名,“$.key”)
-
-> 字段名->"$.key"
-
json_keys(字段) 查询key
select id,username,hobby,json_extract(friend,"$.name") from person; select id,username,hobby,friend->"$.name" from person;
select JSON_KEYS(friend) from person
4 修改
-
json_set("字段","$.key",值)
update person set friend = json_set(friend,"$.name","侯妈") where id =1
update person set friend = json_set(friend,"$.age","18") where id =1
-
json_remove(字段,key)
update person set friend = json_remove(friend,"$.age") where id =1
5 函数搜索
-
JSON_CONTAINS (字段,值)
-
JSON_CONTAINS (字段,值,'$.key')
SELECT * FROM person WHERE JSON_CONTAINS(hobby, '"游戏"');
SELECT * FROM person WHERE JSON_CONTAINS(friend,'"侯妈"','$.name')
注意: 值需要另外加引号,否则报错。
二 视图
1 介绍
-
视图概念:
-
视图可以由数据库的一张或者多张表中的数据组成的,可以对视图中的数据进行增删改查操作,视图可以理解成一张虚拟表,当数据库表中的数据发生变化的时候,视图中的数据也跟着发生变化
-
-
视图优点
-
我们可以把经常用的数据放到视图中,无需关心视图对应的数据库表的结构,表之间的关联关系,也不需要关心表之间的业务逻辑,简化开发人员的操作
-
增加数据的安全性,根据权限对用户进行数据访问的限制,将用户的访问之间限制在视图上,不用访问真实的数据表
-
2 使用
1 创建视图
-
格式:
create view 视图名称 as sql语句(可以是多表查询) CREATE VIEW pv as select id,username,hobby,friend from person CREATE VIEW pv1(uname,gf) as select username,friend from person CREATE VIEW pv as select id,username,hobby,friend from person WHERE JSON_CONTAINS(hobby, '"游戏"');
2 查看视图
-
可以在navicat中直接查看视图
3 修改视图
-
create or replace view 视图名称 as sql语句
如果存在视图名称则修改视图,如果视图名称不存在,则修改视图
create or replace view pv1 (username,girlfriend,hb) as select username,friend ,hobby from person select * from pv1
-
alter view 视图名称 as sql语句
alter view pv1 (username) as select username from person
4 插入数据
和普通表插入的格式一样,但是视图改变也会将影响原来的表
insert into 视图名 () vlues ()
insert into pv1 (username,girlfriend,hb) VALUES ('侯妈',json_object("name","a"),JSON_ARRAY("听歌","下厨房"))
5 删除数据
和普通表删除数据做法一样
delete from 视图名 where 条件
delete from pv1 where username='侯妈'
6 删除视图
drop view if exists 视图名称;
注意: 当我们改变原表的时候,视图表中的内容也会发生改变。