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

视图,存储过程和触发器

目录

 视图

 创建视图:

 视图的使用

 查看库中所有的视图

 删除视图

视图的作用:

存储过程:

为什么使用存储过程?

什么是存储过程?

 存储过程的创建

创建一个最简单的存储过程

使用存储过程

删除存储过程

带参的存储过程

存储过程的缺陷

存储过程和函数的区别

面试题

分页

触发器

什么是触发器?

创建触发器

例子:

查看触发器

删除触发器

存储过程和触发器的区别:


 视图

是从一个或者几个基本表(或视图)导出的表,它与基本表不同,是一个虚表

 视图只能用来查询,不能做增删改(虚拟表)

 创建视图

 create view 视图名【view_xxx / v_xxx】

 as 查询语句

create view v_stu_man as select * from student where ssex='男';

 视图的使用

select * from v_stu_man;

 查看库中所有的视图

select * from information_schema.VIEWS WHERE table_schema = 'myshool';

 删除视图

drop view v_stu_man;

视图的作用:
  1. 简化查询
  2. 重写格式化数据
  3. 频繁访问数据库
  4. 过滤数据

存储过程:

 本质上是一个函数

为什么使用存储过程?

业务流程复杂:业务复杂时,SQL语句相互依赖,顺序执行

频繁访问数据库:每条SQL语句都需单独连接和访问数据库;

先编译后执行:SQL语句的执行需要先编译。

什么是存储过程?

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

 存储过程的创建

 create procedure 存储过程的名字【proc_xxx】(形参列表)

 BEGIN

  一组sql语句集

 END

创建一个最简单的存储过程

delimiter $$   -- 定制定界符

create procedure proc_test()

begin

select * from student;

end $$

delimiter ;  -- 恢复默认的定界符

使用存储过程

call proc_test();

删除存储过程

drop procedure proc_stuPage;

带参的存储过程

存储过程的缺陷

维护性:存储过程的维护成本高,修改挑选调试较为麻烦

移植性:大多数关系行数据库的存储过程存在细微差异

协作性没有相关的版本控制或者IDE,团队中对于存储过程的使用大多是依赖文档

存储过程和函数的区别

 关键字不同

执行和调用方式不同;

返回值不同;

功能不同。

面试题

分页

触发器

什么是触发器?
触发器是数据库中针对数据库表操作触发的特殊的存储过程。

创建触发器

delimiter $$

 create trigger 触发器名【trig_xxx】

before/after insert/ update/ delete

 on 表名 for each row

 begin

   触发后执行的一组sql语句

 end $$

 delimiter ;

主要针对表的增删改操作,可单独指定,也可全部指定

例子:

删除学生sid为1,在此之前把学生的成绩删除

(触发器先执行,再执行sql语句)

查看触发器

SELECT * FROM information_schema.`TRIGGERS`

WHERE trigger_schema = 'myshool';

删除触发器

DROP TRIGGER trig_delstu_delsc;

存储过程和触发器的区别:

语法:关键字不同,存储过程是procedure,触发器是trigger;

执行:存储过程需要调用才执行,触发器自动执行;

返回值:存储过程可以定义返回值,但是触发器没有返回值;

功能:存储过程是一组特定功能的SQL语句,触发器则是SQL语

句前后执行,本身不影响原功能。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 若依 ruoyi poi Excel合并行的导入
  • labview实现两台电脑共享变量传输及同步
  • 立创梁山派--移植开源的SFUD万能的串行 Flash 通用驱动库
  • 明星中药企业系列洞察(十二):百年老字号胡庆余堂如何借势焕新?
  • Go基础编程 - 10- 接口(interface)
  • 服务器选择租用还是托管?托管和租用哪个比较划算
  • 为RTEMS Raspberrypi4 BSP添加SPI支持
  • css快捷代码【超出一行文本显示省略号/超出三行显示省略号/超出n行...】
  • springboot 缓存预热的几种方案
  • 科技云报道:算网筑基AI注智,中国联通如何讲出AI时代的“新故事”?
  • 《MySQL DBA 修炼之道》第二章 Mysql目录结构及bin目录下的文件含义
  • Nacos-2.4.0最新版本docker镜像,本人亲自制作,部署十分方便,兼容postgresql最新版本17和16,奉献给大家了
  • 4 Go语言的操作符
  • Qt 实战(3)数据类型 | 3.2、QVariant
  • 梯度消失和梯度爆炸
  • hexo+github搭建个人博客
  • 【附node操作实例】redis简明入门系列—字符串类型
  • HTTP--网络协议分层,http历史(二)
  • JS专题之继承
  • npx命令介绍
  • ViewService——一种保证客户端与服务端同步的方法
  • yii2中session跨域名的问题
  • 删除表内多余的重复数据
  • 微信小程序实战练习(仿五洲到家微信版)
  • 学习HTTP相关知识笔记
  • 硬币翻转问题,区间操作
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #if和#ifdef区别
  • #Linux(Source Insight安装及工程建立)
  • #pragma预处理命令
  • (10)STL算法之搜索(二) 二分查找
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (六)Hibernate的二级缓存
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转) 深度模型优化性能 调参
  • .NET MVC之AOP
  • .NET开发者必备的11款免费工具
  • .NET中的Exception处理(C#)
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @EnableAsync和@Async开始异步任务支持
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [ 数据结构 - C++]红黑树RBTree
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [51nod1610]路径计数
  • [android] 天气app布局练习
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BROADCASTING]tensor的扩散机制
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [codeforces]Checkpoints