当前位置: 首页 > news >正文

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

四、视图、存储过程、触发器

4.1 视图
  • 创建

    -- 创建视图
    create or replace view v_emp as
    select id, name
    from employee;
    
  • 查询

    -- 查看视图的创建语句
    show create view v_emp;
    -- 查询视图
    select * from v_emp;select * from v_emp where id = 1;
    
  • 修改

    -- 修改视图
    create or replace view v_emp as
    select id, name, age
    from employee;alter view v_emp as select id, name from employee;
    
  • 删除

    -- 删除视图
    drop view v_emp;
    
  • 视图的检查选项

    当使用 WITH CHECK OPTION 子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如 插入,更新,删除,以使其符合视图的定义。MySQL也允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,MySQL提供了两个选项:CASCADED 和 LOCAL,默认为:CASCADED

在这里插入图片描述
在这里插入图片描述

LOCAL:当在操作视图时,会递归的去找当前视图所依赖的视图,如果当前视图以及依赖的视图定义了有WITH CHECK OPTION这样的检查选项,那么将会去判定我们所操作的数据,是否满足视图的条件,如在递归的过程中找到某个视图没有定义 检查选项 ,那么则不会做检查。

  • 视图的更新
    在这里插入图片描述
  • 视图的作用
    在这里插入图片描述
视图的案例

在这里插入图片描述

4.2 存储过程
  • 介绍
    在这里插入图片描述

  • 特点
    在这里插入图片描述

  • 创建
    在这里插入图片描述

  • 调用
    在这里插入图片描述

  • 查看

    • ‘xxx’ 指具体的表名
      在这里插入图片描述
  • 删除
    在这里插入图片描述

在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter 指定SQL语句的结束符,否则会报错。

  • 变量

    • 系统变量
      在这里插入图片描述

      select @@session.autocommit;

    • 用户自定义变量
      在这里插入图片描述

    • 局部变量
      在这里插入图片描述

    • if
      在这里插入图片描述

    • 参数
      在这里插入图片描述

    • case
      在这里插入图片描述

    • while
      在这里插入图片描述

    • repeat
      在这里插入图片描述

    • loop
      在这里插入图片描述

    -- 创建一个存储过程,名为 test3,接受一个整数参数n
    create procedure test3(in n int)
    begin-- 声明一个变量res,用于存储结果,默认值为0declare res int default 0;-- 定义一个名为sum的循环sum:loop-- 如果n大于0,则执行以下代码if (n > 0) then-- 将n加到res上,并将结果赋值给resset res := res + n;-- 将n减1,以便在下一次循环中使用set n := n - 1;else-- 如果n不大于0,则退出循环leave sum;end if;end loop sum;-- 输出最终的res值select res;
    end;-- 调用test3存储过程,并传入参数10
    call test3(10);
    
    -- iterate 的使用
    create procedure test4(in n int)
    begindeclare res int default 0;sum_even:loopif n = 0 thenleave sum_even;end if;if n % 2 = 1 thenset n := n - 1;iterate sum_even;end if;set n := n - 1;set res := res + n;select res;end loop sum_even;
    end;call test4(10);
    
    • cursor
      在这里插入图片描述
      在这里插入图片描述

    在这里插入图片描述

    • 条件处理程序
      在这里插入图片描述
    declare cur cursor for select id from employee;
    declare exit handler for not found close cur;
    
4.3 存储函数

在这里插入图片描述
在这里插入图片描述

4.4 触发器
  • 介绍

当我们执行了一条 update 语句时,该语句影响了五行
行级触发器:会被触发五次
语句级触发器:不管影响了多少行,都只触发一次

在这里插入图片描述

  • 语法
    在这里插入图片描述
4.5 总结

在这里插入图片描述


http://www.mrgr.cn/news/19614.html

相关文章:

  • 海康二次开发笔记10-独立Group导入、导出及执行
  • 【MySQL】Ubuntu22.04安装MySQL8.0.39及修改默认用户名和密码
  • 等保待优化处理集合
  • while和for的区别和break、continue的用法
  • 3D打印模型库
  • python学习14:如何读取yaml文件?
  • 隐式类型转换/匿名对象的使用以及构造拷贝构造的优化
  • Kafka【八】如何保证消息发送的可靠性、重复性、有序性
  • 什么是Selenium?使用Selenium进行自动化测试
  • 工欲善其事,必先利其器——推荐一款适合程序员专业编程显示屏
  • Mac(M2)系统手动安装ADB
  • 23. Redis数据结构(二)
  • 此项不起作用,请确保你的蓝牙设备仍可检测到
  • 体验通义灵码 @workspace:轻松分析项目结构,结合代码仓库理解工程、查询问答等
  • 如何把文件夹里的所有文件每个建立一个文件夹,并且以文件的名字命名
  • LeetCode 热题100-72 每日温度
  • 【C++ Primer Plus习题】10.8
  • 我的大模型岗位面试总结!太卷了!!!—我面试了24家大模型岗位 只拿了9个offer!
  • pod基础和镜像拉取策略
  • mysql实用系列:字段类型转换该怎么去转