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

视图、存储过程、触发器

  一、视图

        视图是从一个或者几个基本表(或视图)导出的表。它与基 本表不同,是一个虚表,视图只能用来从查询,不能做增删改(虚拟的表)

1.创建视图

创建视图的语法:
create view 视图名【view_xxx / v_xxx】
as 查询语句

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

2.视图的使用 

select * from v_stu_man;

 

create view v_vstuman_class as
select v_stu_man.* from v_stu_man 
left join class on v_stu_man.classid=class.classid

select * from v_vstuman_class;

此时,若修改表中的sname='赵蕾蕾' ,查看数据显示结果

3.查看库中所有的视图 

-- 查看库中所有的视图
select * from information_schema.VIEWS 
WHERE table_schema = 'myschool';

 4.删除视图

drop view v_stu_man;

5 视图的作用

1.简化查询

2.重写格式化数据

3.频繁访问数据库

4.过滤数据

二、存储过程

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

1.为什么使用存储过程 

  • 业务流程复杂:业务复杂时,SQL语句相互依赖,顺序执行;
  • 频繁访问数据库:每条SQL语句都需单独连接和访问数据库;
  • 先编译后执行:SQL语句的执行需要先编译。

2.创建存储过程

创建存储过程的语法:
create procedure 存储过程名字【proc_xxx】(形参列表)
begin 
    一组sql语句集

end 

3.创建最简单的存储过程

delimiter $$
create procedure proc_test()
begin select * from student;end $$
delimeter ;

4. 使用存储过程

call proc_test();

存储过程与函数的区别:

①语法 :关键字不同,存储过程是procedure, 函数是function; 

②执行 :存储过程可以独立执行,函数必须依 赖表达式的调用;

③返回值 :存储过程可以定义多个返回结果, 函数只有一个返回值;

④功能 :函数不易做复杂的业务逻辑,但是存 储过程可以。

5. 带参数的存储过程

-- in 只入参(值传递)
-- out 只出参 (无)

-- inout 出入参 (引用传递)

-- 环境变量  @ 局部环境变量  @@ 全局环境变

-- 带参数的存储过程
delimiter $$
create procedure proc_test2(in a int,   -- in 只入参(值传递)out b int,  -- out 只出参 (无)inout c int -- inout 出入参 (引用传递)
)
begin set a = a+1;set b = b+100;set c = c+1000;
end $$
delimiter ;-- 环境变量  @ 局部环境变量  @@ 全局环境变量
set @x = 10;   -- 11 10 null
set @y = 20;	 -- 120 20 null
set @z = 30;	 -- 1030 30 null select @x, @y, @z;call proc_test2(@x,@y,@z)select @x, @y, @z;

6.删除存储过程

drop procedure proc_stuPage; 

7.分页(面试题!) 

-- 面试题
-- 分页
-- 删除存储过程
drop procedure proc_stuPage;
delimiter $$
create procedure proc_stuPage(in curpage int,in sizepage int,out stucount int,out pagecount int
)
begin declare cp int;set cp = (curpage-1)*sizepage;select count(*) from student into stucount;set pagecount = ceiling(stucount / sizepage);select * from student limit cp,sizepage;
end $$
delimiter ;set @a = 0;
set @b = 0;
call proc_stuPage(2,3,@a,@b);
select @a,@b

8.存储过程的缺陷

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

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

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

三、触发器

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

1.创建触发器

创建触发器的语法:
delimiter $$
create trigger 触发器名【trig_xxx】
before/after  insert/ update / delete 
on 表名  for each row 
begin 
     触发后执行的一组sql语句
end $$
delimiter ; 

注意

• 触发器触发时间分为Before和After两种;

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

• 查看所有的触发器 SELECT DISTINCT EVENT_OBJECT_TABLE FROM information_schema.`TRIGGERS` WHERE EVENT_OBJECT_SCHEMA=‘数据库名' 

-- 删除学生 sid 为 1  在此之前把学生成绩删除delimiter $$
create trigger trig_delstu_delsc
before delete on student for each row 
begin -- old 已经存在的数据 、 new  还不存在的数据delete from sc where sid = old.sid;
end $$
delimiter ;delete from student where sid = 1;select * from student;select * from sc;[SQL] delete from student where sid = 2;
受影响的行: 1
时间: 0.008ms

2.查看所有的触发器

SELECT * FROM information_schema.`TRIGGERS`
WHERE trigger_schema = 'myschool'

3.删除触发器

drop trigger trig_delstu_delsc

4.存储过程和触发器的区别

  • 语法:关键字不同,存储 过程是procedure, 触发器是trigger;
  • 功能:存储过程是一组特定功能的 SQL语句,触发器则是SQL语 句前后执行,本身不影响原功 能。
  • 执行: 存储过程需要调用才执 行,触发器自动执行;
  • 返回值 : 存储过程可以定义返回值, 但是触发器没有返回值;

 

 

 

 

 

 

 

 

 

相关文章:

视图、存储过程、触发器

一、视图 视图是从一个或者几个基本表(或视图)导出的表。它与基 本表不同,是一个虚表,视图只能用来从查询,不能做增删改(虚拟的表) 1.创建视图 创建视图的语法: create view 视图名【view_xxx / v_xxx】 a…...

【学习笔记】解决Serial Communication Library编译问题

【学习笔记】解决编译 Serial Communication Library 时的 Catkin 依赖问题 Serial Communication Library 是一个用 C 编写的用于连接类似 rs-232 串口的跨平台库。它提供了一个现代的 C 接口,它的工作流程设计在外观和感觉上与 PySerial 相似,但串口速…...

在 Windows 环境下实现负载均衡:提升系统性能与可靠性的关键技术

Windows 环境下的负载均衡:提升系统性能与可靠性的关键技术 负载均衡(Load Balancing)是现代网络架构中不可或缺的一部分,通过将请求分配到多台服务器上来提高系统的性能和可靠性。本文将介绍在 Windows 环境下使用负载均衡的基本…...

【Linux】-----工具篇(自动化构建工具make/makefile)

目录 前言 一、是什么? 二、怎么样的? 三、原理及细节 图解代码 细节1:make工作规则 ①依赖文件存在 ②依赖文件不存在 ③依赖文件列表为空(特殊) .PHONY关键字 细节2:makefile识别程序需要重新编译? 四、…...

图的遍历:深度优先搜索(DFS)

引言 图遍历是指按照一定的顺序访问图中的每个顶点。遍历图的两种主要方法是深度优先搜索(Depth-First Search, DFS)和广度优先搜索(Breadth-First Search, BFS)。本文将详细介绍深度优先搜索的定义、算法及其实现。 深度优先搜…...

普元EOS学习笔记-某些版本的EOS提供的maven获取依赖失败的问题解决

前言 普元EOS的开发包中,提供了maven,因为EOS项目的某些依赖只能从普元官方仓库获取,因此,编译EOS项目必须使用EOS提供的maven。 maven拉取依赖失败 某些版本的EOS提供的maven在编译EOS项目的时候会出现拉取失败的现象。 [FATA…...

Pycharm + Pyside6

1. 使用 Qt designer 创建 UI 文件 2. 使用 UIC 工具生成 ui_.py 文件 3. 自定义类导入ui.py 文件的窗口类 4.自定义窗口继承UI窗体类 5. self.setupUi(self) from PySide6.QtWidgets import QApplication, QWidget, QComboBox, QVBoxLayout from ui_test import Ui_Formc…...

强化学习之价值迭代算法动态规划求解悬崖漫步环境(CliffWalking)最优策略及最优状态价值函数

class CliffWalkingEnv:def __init__(self,ncol12,nrow4):self.ncolncol#定义网格世界的列self.nrownrow#定义网格世界的行self.Pself.createP()#转移矩阵P[state][action][(p,next_state,reward,done)]包含下一个状态和奖励def createP(self):P[[[]for i in range(4)]for j in…...

javascript deriveKey和deriveBits()由主密钥派生出新的密钥进行加密

deriveKey 方法的完整示例,演示如何使用 HMAC 作为密钥派生函数(KDF)来从一个给定的秘密(如密码)派生出一个新的 AES 加密密钥。 //创建一个函数来生成随机盐function getRandomSalt(length){let arraynew Uint8Array…...

基于微信小程序的自习室选座系统/基于Java的自习室选座系统/自习室管理系统的设计与实现

获取源码联系方式请查看文章结尾🍅 摘要 自习室选座是学校针对用户必不可少的一个部分。在学校的整个过程中,学生担负着最重要的角色。为满足如今日益复杂的管理需求,各类微信小程序自习室选座也在不断改进。本课题所设计的小程序自习室选座系…...

echarts所遇到的问题,个人记录

TreeMap 矩形树图,label设置富文本之后,无法垂直居中 font-size 支持rem,其余不支持 font-size 支持 rem,但是其余的属性如height,width等不支持 echarts-for-react 绑定事件,会覆盖实例上绑定的 当给cha…...

Skyeye云智能制造企业版源代码全部开放

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台],适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…...

Springboot 整合Elasticsearch

1 java操作ES方式 1.1 操作ES 9300端口(TCP) 但开发中不在9300进行操作 ES集群节点通信使用的也是9300端口如果通过9300操作ES,需要与ES建立长连接 可通过引入spring-data-elasticsearch:transport-api.jar不在9300操作原因:1.springboot版本不同&…...

WeNet环境配置与aishell模型训练

WeNet环境配置与aishell模型训练 1环境配置 踩坑记录: 系统使用win11,我根据wenet官方文档,使用conda虚拟环境安装了cuda12.1,安装wenet依赖库,其中deepspeed报错,根据报错信息查询github,发现…...

【C++的剃刀】我不允许你还不会AVL树

​ 学习编程就得循环渐进,扎实基础,勿在浮沙筑高台 循环渐进Forward-CSDN博客 Hello,这里是kiki,今天继续更新C部分,我们继续来扩充我们的知识面,我希望能努力把抽象繁多的知识讲的生动又通俗易懂,今天要…...

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端,输入以下命令: yarn create vite 输入完成以后输入项目名称、选择开发框架,选择开发语言,如下图所示,即可完成项目创建。 注意事项: 1. Node版本必须符合要求&…...

Linux Vim教程:多文件编辑与窗口管理

目录 1. 多文件编辑基础 1.1 缓冲区管理 1.2 标签页管理 1.3 分屏管理 2. 多文件编辑的高级技巧 2.1 同时编辑多个文件 2.2 使用会话 2.3 使用寄存器 3. 窗口管理的实用技巧 3.1 窗口调整 3.2 窗口排列 3.3 快速切换 4. 使用插件增强多文件编辑与窗口管理 4.1 NE…...

C语言进阶 11.结构体

C语言进阶 11.结构体 文章目录 C语言进阶 11.结构体11.1. 枚举11.2. 结构类型11.3. 结构与函数11.4. 结构中的结构11.5. 类型定义11.6. 联合11.7. PAT11-0. 平面向量加法(10)11-1. 通讯录的录入与显示(10) 11.1. 枚举 常量符号化: 用符号而不是具体的数字表示程序中的数字 cons…...

Vue--解决error:0308010C:digital envelope routines::unsupported

原文网址:Vue--解决error:0308010C:digital envelope routines::unsupported_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决node.js在运行Vue项目时的报错:error:0308010C:digital envelope routines::unsupported。 问题描述 使用node.js运行Vu…...

go-kratos 学习笔记(6) 数据库gorm使用

数据库是项目的核心,数据库的链接数据是data层的操作,选择了比较简单好用的gorm作为数据库的工具;之前是PHP开发,各种框架都是orm的操作;gorm还是很相似的,使用起来比较顺手 go-kratos官网的实例是ent&…...

Anno 1800模组加载器完全掌握指南:从安装到创意开发

Anno 1800模组加载器完全掌握指南:从安装到创意开发 【免费下载链接】anno1800-mod-loader The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods. 项目地址: https://gitcode.com/gh_mirrors/an/an…...

联想ideapad700-15ISK双系统迁移实战:Win10+Arch无缝切换到SSD的完整流程

联想ideapad700-15ISK双系统迁移实战:Win10Arch无缝切换到SSD的完整流程 当你的笔记本电脑运行速度开始变慢,开机时间越来越长,或许该考虑升级到SSD了。对于使用联想ideapad700-15ISK并安装了Win10和Arch双系统的用户来说,迁移系统…...

启动 SAP Fiori Launchpad Designer:把 URL、scope、client 与排障思路一次讲透

在 SAP Fiori 项目里,很多团队花了不少时间做完前置配置,却在真正打开 Launchpad Designer 的那一刻卡住了:地址到底怎么拼?CONF 和 CUST 应该怎么选?为什么同一套内容在不同 client 里表现不一样?如果页面迟迟加载不出来,问题究竟出在 SAPUI5、ICF、OData,还是权限本身…...

InstructPix2Pix实现Web端图像编辑:前端开发实战

InstructPix2Pix实现Web端图像编辑:前端开发实战 1. 为什么要把InstructPix2Pix搬到浏览器里 你有没有遇到过这样的场景:设计师同事发来一张产品图,需要临时把背景换成纯白;电商运营急着要一组节日主题的海报,但PS操…...

告别VS手动配置!用Premake5+Lua脚本一键生成C++项目(附多平台实战案例)

告别VS手动配置!用Premake5Lua脚本一键生成C项目(附多平台实战案例) 每次新建C项目时,你是否也厌倦了在Visual Studio中重复点击那些繁琐的配置选项?从平台工具集到运行时库,从包含目录到预处理器定义&…...

手机高频麦克风音频采样技术

随着移动终端音频应用的多元化发展,从超声通信、高频声纹识别到医疗级音频监测,对手机麦克风的高频采样能力提出了更高要求。手机高频麦克风音频采样技术,是实现高频音频信号捕捉、传输与后续处理的核心支撑,其性能直接决定了高频…...

这家口腔机构,如何用AI把到院成本从1200+打到310元?

广东有一家口腔机构,三级专科,种植体量在区域排前三。 听起来很牛吧?但老板跟我聊天的时候,愁得不行。他说,抖音投放成本飘高,线索到院率低,客服人手不足,加微后无差别群发&#xff…...

OWL ADVENTURE与Git协作:AI视觉项目的版本管理与团队开发实践

OWL ADVENTURE与Git协作:AI视觉项目的版本管理与团队开发实践 做AI视觉项目,尤其是用OWL ADVENTURE这类框架时,最头疼的往往不是模型调参,而是项目本身的管理。你有没有遇到过这种情况:同事改了一个配置文件&#xff…...

零代码基础也能用:万物识别-中文-通用领域镜像一键部署教程

零代码基础也能用:万物识别-中文-通用领域镜像一键部署教程 1. 开箱即用的图片识别神器 想象一下这样的场景:你刚拍了一张照片,还没来得及细看,AI就已经告诉你画面里有什么——这不是科幻电影,而是"万物识别-中…...

问题解决:AI股票分析师启动失败?自查脚本与Ollama服务加载

问题解决:AI股票分析师启动失败?自查脚本与Ollama服务加载 1. 引言 你满怀期待地部署了那个“AI股票分析师”镜像,点击启动,然后……页面一片空白,或者提示服务不可用。这种感觉就像准备大展拳脚时,发现工…...