MySQL基础-json

什么是JSON?

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

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

二、操作

1、创建json字段

2、插入数据
数组:json_array(值1,值2,…)
对象:json_object(键1,值1,键2,值2)
3、查询
json_extract(字段名,“ . k e y ” ) − > 字段名 − > “ .key”) -> 字段名->“ .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;

4、修改
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,“ . a g e " , " 18 " ) w h e r e i d = 1 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 r e m o v e ( f r i e n d , " .age","18") where id =1 update person set friend = json_remove(friend," .age","18")whereid=1updatepersonsetfriend=jsonremove(friend,".age”) where id =1

5、函数搜索
JSON_CONTAINS(字段,值)
JSON_CONTAINS(字段,值,‘ 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 r e m o v e ( f r i e n d , " key’) update person set friend = json_remove(friend," key)updatepersonsetfriend=jsonremove(friend,".age") where id =1

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

2 修改视图

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

3 插入数据
和普通表插入的格式一样,但是视图改变也会将影响原来的表

insert into 视图名 () vlues ()

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

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

6 删除视图
drop view if exists 视图名称:
注意: 当我们改变原表的时候,视图表中的内容也会发生改变。

存储过程

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

2 使用
1、创建存储过程
格式:

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:表示参数既是输入参数,又是输出参数,用于接收值并返回结果
案例:

DELIMITER //
CREATE PROCEDURE GetStudentNameById(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 GetStudentNameById(10, @name);
– 查看存储过程返回的结果
SELECT @name;

2 存储过程的调用
可以使用CALL语句来调用存储过程。调用存储过程时,需要提供传递给存储过程的参数。如果存储过程有输出参数,需要在调用存储过程之前声明这些参数。
格式: CALL procedure_name([parameter_value, …]);

procedure_name是要调用的存储过程的名称;
parameter_value是传递给存储过程的参数值。
– 调用存储过程,并将结果保存到@name变量中
CALL GetStudentNameById(10, @name);
– 查看存储过程返回的结果
SELECT @name;
3 查看存储过程
SHOW PROCEDURE STATUS WHERE db = ‘数据库名称’;
SHOW CREATE PROCEDURE 存储过程的名称;
SHOW PROCEDURE STATUS WHERE db = ‘xinzhi666’;
SHOW CREATE PROCEDURE GetStudentNameById

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL提供了一些函数来对JSON数据进行操作。其中一些常用的函数包括: 1. JSON_EXTRACT(json_doc, path):用于从JSON数据中提取指定路径的值。例如,SELECT JSON_EXTRACT(content, '$.name') FROM json_table; 可以提取出json_table表中content字段中的name值。 2. JSON_ARRAYAGG(expr):用于将多个表达式的结果合并为一个JSON数组。例如,SELECT JSON_ARRAYAGG(name) FROM json_table; 可以将json_table表中的name字段的值合并为一个JSON数组。 3. JSON_OBJECT(key, value, ...):用于创建一个JSON对象。例如,SELECT JSON_OBJECT('name', name, 'age', age) FROM json_table; 可以创建一个包含name和age字段JSON对象。 4. JSON_ARRAY(value, ...):用于创建一个JSON数组。例如,SELECT JSON_ARRAY(name, age) FROM json_table; 可以创建一个包含name和age字段值的JSON数组。 5. JSON_REMOVE(json_doc, path\[, path\] ...):用于移除JSON数据中指定路径的数据。例如,SELECT JSON_REMOVE(content, '$.address.city') FROM json_table WHERE id = 2; 可以移除json_table表中id为2的记录中address字段中的city值。 6. JSON_REPLACE(json_doc, path, val\[, path, val\] ...):用于替换JSON数据中指定路径的值。例如,SELECT JSON_REPLACE(content, '$.address.street', 'xxx街道') FROM json_table WHERE id = 1; 可以将json_table表中id为1的记录中address字段中的street值替换为'xxx街道'。 7. JSON_SET(json_doc, path, val\[, path, val\] ...):用于向JSON数据中插入数据。例如,SELECT JSON_SET(content, '$.address.street', 'xxx街道') FROM json_table WHERE id = 1; 可以向json_table表中id为1的记录中address字段中插入一个street字段,并设置其值为'xxx街道'。 这些函数可以帮助我们在MySQL中对JSON数据进行灵活的操作和处理。 #### 引用[.reference_title] - *1* *2* *3* [MySQL数据库基础JSON函数各类操作一文详解](https://blog.csdn.net/Huangjiazhen711/article/details/127684284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值