MySQL进阶篇3-视图/存储过程/触发器、锁

本文详细介绍了视图在数据库中的概念、创建与操作,存储过程的封装和复用特性,以及触发器在数据完整性和一致性控制中的作用。重点讨论了不同级别的锁机制,如全局锁、表级锁和行级锁,以及它们在并发环境下的性能和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视图/存储过程(函数)/触发器

视图:由表动态生成,虚拟的表,保存的是sql的逻辑。

创建视图:

create [or replace] view viewName【列名列表】 as select 语句 [with [cascaded|local] check option]

修改视图:

1、【or replace】必须存在。

2、alter view viewName as .....

删除视图:

drop view 【if exists】 viewName;

with [cascade|local] check option

操作视图:

1、添加数据。

【insert into view1 values(.....)】数据添加到了基表中。

例如,视图是id < 30的进去视图。但是通过视图添加id为40的数据,数据添加成功,但是视图查询不到。因为id<30。

解决: with cascaded check option;增加关联。

通过视图1创建视图2,如果添加了限制条件,两个视图都要检查。给依赖的视图也添加了限制条件

2、 with local check option :

当前的视图限制,递归查找之前的。但是限制不进行传递操作,依赖的视图有限制就有,没有限制就没有。

3、视图更新条件:

视图更新必须与基础表存在行记录1:1的关系。

例如:sum min max count distinct group by、having、union、union all

视图作用:

1、简化操作,直接查询视图就行

2、安全。【数据库可以进行用户授权,但是不能授权到特定行和特定列上。通过视图,用户只能查询和修改他们能见到的数据】

3、数据独立。视图可以帮助用户屏蔽真实表结构变化带来的影响。

存储过程

特点:

1、封装、复用

2、可以接收参数,也可以返回数据

3、减少网络交互,效率提升

创建

create procedure name(args)

begin

--sql

end;

create procedure p1()
begin
    select count(*) from students;
end;

调用

call procedure_name(args);

查看存储过程

select * from infomation_schema.routines where routine_schema = 'xxx'; --查询指定数据库的存储过程及状态信息
show create procedure p1;--查询某个存储过程的定义

删除存储过程

drop procedure [if exists] p1;

语法结构

变量

1、系统变量:是MySQL服务器提供,不是由用户定义的,属于服务器层面。分为全局变量Global会话变量Session

查看系统变量:

show [session|global] variables [like '_ _ _'];
select @@[session|global] 系统变量名

设置系统变量

set [session|global] 系统变量名=值;
set @@[session|global].系统变量名 = 值;

虽然设置的是全局的,但是服务器重启后,又会初始化为默认值。

2、用户自定义变量

是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用@变量名使用就行,其作用域为当前连接。

赋值操作

--赋值操
set @var_name = xxxx
set @var_name := xxxx
select @var_name:= xxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值