JSon、视图、存储数据过程

Json

JSON是一种轻量级的数据交换格式,全称为JavaScript Object Notation(JavaScript对象表示法)。它以易于阅读和编写的文本格式来表示结构化数据,常用于Web应用程序之间的数据传输。

JSON由键值对组成:

  • 对象(Object):用花括号 {} 表示一个对象,对象由多个键值对组成,键值对之间用逗号分隔。

{
“key1”: “value1”,
“key2”: “value2”,
“key3”: “value3”
}

  • 数组(Array):用方括号 [] 表示一个数组,数组是由多个值组成,值之间用逗号分隔。

[“value1”, “value2”, “value3”]

创建json字段

在这里插入图片描述

插入数据

  • 数组:json_array(值1,值2,…)
  • 对象:json_object(键1,值1,键2,值2)

insert into person values (0,“老韩”,json_array(“听歌”,“游戏”),json_object(“name”,“老孙”))
在这里插入图片描述

查询

  • json_extract(字段名,“$.key”)

  • -> 字段名->“$.key”

  • json_keys(字段) 查询key

    select id,username,hobby,json_extract(friend,“ . n a m e " ) f r o m p e r s o n ; s e l e c t i d , u s e r n a m e , h o b b y , f r i e n d − > " .name") from person; select id,username,hobby,friend->" .name")frompersonselectid,username,hobby,friend>".name” from person;
    在这里插入图片描述

修改

  • json_set(“字段”,“ . k e y " , 值 ) u p d a t e p e r s o n s e t f r i e n d = j s o n s e t ( f r i e n d , " .key",值) update person set friend = json_set(friend," .key",)updatepersonsetfriend=jsonset(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

函数搜索

  • JSON_CONTAINS (字段,值)
  • JSON_CONTAINS (字段,值,‘$.key’)

SELECT * FROM person WHERE JSON_CONTAINS(hobby, ‘“游戏”’);

SELECT * FROM person WHERE JSON_CONTAINS(friend,‘“侯妈”’,‘$.name’)

注意: 值需要另外加引号,否则报错。

视图

什么是视图

视图就是已存在的表中导出来的虚拟的表,可以像操作基本表一样操作视图

视图的优点

  1. 简化查询语句
  2. 提高安全性
  3. 逻辑数据独立性

创建视图

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, ‘“游戏”’);

查看视图

可以在navicat中直接查看视图

修改视图

  • create or replace view 视图名称 as sql语句
  1. 如果存在视图名称则修改视图,如果视图名称不存在,则修改视图
    create or replace view pv1 (username,girlfriend,hb) as select username,friend ,hobby from person
    select * from pv1

  2. alter view 视图名称 as sql语句
    alter view pv1 (username) as select username from person

  3. 和普通表插入的格式一样,但是视图改变也会将影响原来的表
    insert into 视图名 () vlues ()

列如:
insert into pv1 (username,girlfriend,hb) VALUES (‘侯妈’,json_object(“name”,“a”),JSON_ARRAY(“听歌”,“下厨房”))

删除视图

和普通表删除数据做法一样
delete from 视图名 where 条件

删除数据

和普通表删除数据做法一样
delete from 视图名 where 条件

列如:delete from pv1 where username=‘侯妈’

存储数据

		存储过程是一组预先编译的SQL语句,被命名并存储在数据库中。它们通常由数据库管理员或开发人员编写,并可以包含控制结构(例如条件、循环等)和输入/输出参数。存储过程可以像函数一样被调用,但它可能不返回值,也可以返回多个结果集。

创建存储过程

DELIMITER //
CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] 	parameter_name data_type, ...)
BEGIN
-- 存储过程的SQL语句
END //
DELIMITER ;
  • procedure_name`是你给存储过程起的名字;
  • parameter_name是存储过程参数的名字;
  • data_type是参数的数据类型。
  • DELIMITER: DELIMITER是一个特殊的命令,用于改变语句分隔符的默认值。SQL语句的默认分隔符是分号(;),这意味着在执行多个语句时,每个语句都必须以分号结束。然而,在创建存储过程语句时,可能包含了多个分号,这会导致MySQL在遇到第一个分号时就认为语句结束,从而产生错误。
  • IN:表示参数是输入参数,用于接收调用存储过程时传递的值。
  • OUT:表示参数是输出参数,用于将存储过程的计算结果返回给调用者。
  • INOUT:表示参数既是输入参数,又是输出参数,用于接收值并返回结果

存储过程的调用

格式: CALL procedure_name([parameter_value, …]);

  • procedure_name是要调用的存储过程的名称;
  • parameter_value是传递给存储过程的参数值。
  • – 调用存储过程,并将结果保存到@name变量中
    CALL GetStudentNameById(10, @name);
    – 查看存储过程返回的结果
    SELECT @name;

查看存储过程

SHOW PROCEDURE STATUS WHERE db = ‘数据库名称’;
SHOW CREATE PROCEDURE 存储过程的名称;
SHOW PROCEDURE STATUS WHERE db = ‘数据库名字’;
SHOW CREATE PROCEDURE GetStudentNameById

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值