MYSQL数据库详解(6)-- 视图存储方式触发器

MYSQL数据库详解(6)

      • 视图
          • 特征:
          • 作用:
          • 创建视图
          • 使用视图
          • 删除视图
      • 存储过程 ***
          • 为什么使用存储过程
          • 定义:
          • 存储过程和函数的区别
          • 缺陷:
          • 创建存储过程
          • 使用存储过程
          • 环境变量 @ 局部环境变量 @@ 全局环境变量
          • 删除存储过程
          • 分页-- 存储过程分页 (**记住)
      • 触发器
          • 定义:
          • 语法:
          • 删除学生 (案例)
          • 存储过程和触发器的区别

视图

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

特征:

1.视图不能做增删改,只能用来查询
2.使用的时候每次都会获取到最新的数据
3.不允许有重复的字段名
4.视图兼容性差,不能和数据库一起转储

作用:

1.简化查询
2.重写格式化数据
3.频繁访问数据库
4.过滤数据

创建视图

create view 视图名【view_xxx\v_xxx】 as 查询语句

create view v_stu_man as select * from student where ssex = '男';
使用视图
select  * from v_stu_man;
删除视图

drop view v_stu_man

存储过程 ***

特征:

1.是一种特殊的函数
2.可以有多个返回结果

为什么使用存储过程

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

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

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

定义:

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

存储过程和函数的区别

在这里插入图片描述

缺陷:

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

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

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

创建存储过程

CREATE PROCEDURE 存储过程名【proc_xxx】 (形参列表)
BEGIN
DECLARE 变量 变量类型
END

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

delimiter $$  -- 定制定界符
create procedure proc_stu()
begin select * from student;
end $$
delimiter ;  -- 恢复默认定界符
使用存储过程
call proc_stu();

2.带参的存储过程

delimiter $$
create procedure proc_test(in x int,					-- in  只入参out y int,				-- out 只出参inout z int				-- inout 出入参
)
begin set x = x+1;set y = y+100;set z = z+1000;
end $$
delimiter ;
环境变量 @ 局部环境变量 @@ 全局环境变量
set @a = 1;      -- 2			
set @b = 2;      -- 102   2			
set @c = 3;      -- 1003* 3			call proc_test(@a,@b,@c);
删除存储过程
drop procedure proc_test;
分页-- 存储过程分页 (**记住)
delimiter $$
create procedure proc_stupage(in curpage int,in sizepage int,out sumcount int,out sumpage int
)
beginDECLARE cp int;  -- 定义变量set cp = (curpage - 1)*sizepage;-- 总个数-- into一个数据付给变量select count(*) from student into sumcount; -- 总页数set sumpage = ceiling(sumcount/sizepage);select * from student limit cp,sizepage;
end $$
delimiter ;set @a = 2;
set @b = 3;
set @m = 0;
set @n = 0;
call proc_stupage(@a,@b,@m,@n);
select @m,@n;

触发器

定义:

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

特征: 隐式执行

语法:

CREATE TRIGGER 触发器名【trig_xxx】
BEFORE/AFTER – 触发顺序
INSERT/UPDATE/DELETE – 触发事件
ON 数据库.表名 – 事件表
FOR EACH ROW
BEGIN
触发器内容 – 事件出发后要写的语句
END$$

删除学生 (案例)
delete from student where sid = 2;select * from student;
select * from sc;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 ;
存储过程和触发器的区别

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

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

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

4.功能:存储过程是一组特定功能的SQL语句,触发器则是SQL语句前后执行,本身不影响原功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux】查看进程和子进程

在Linux系统中,可以使用多个命令来查看进程及其子进程。以下是一些常用的方法: 1. ps 命令 ps 命令用于显示当前进程的状态。可以结合不同的选项来查看进程及其子进程。 查看进程树: ps -auxf - -a 显示所有进程。 - -u 显示进程的用户/所…

上门服务小程序|预约上门服务系统开发有哪些功能?

在现代快节奏的生活中,压力和疲劳常常困扰着我们。为了缓解这种状况,越来越多的人选择去按摩店进行放松。然而,繁忙的工作和家庭责任往往让我们无法抽出时间去按摩店。在这种情况下,上门按摩服务应运而生。而随着科技的发展&#…

css实现右边边框分割线 渐变色,边框四角样式

分割线 代码 .data-item:first-of-type {border-right: 2px solid;border-image: linear-gradient(to top,rgba(0, 0, 0, 0.1) 0%,rgba(81, 110, 197, 0.76) 50%,rgba(0, 0, 0, 0.1) 100%)1;padding: 15px 0;}四角边框样式 代码 .chart-box {cursor: pointer;background: line…

Tomcat Notes: Web Security, HTTPS In Tomcat

This is a personal study notes of Apache Tomcat. Below are main reference material. - YouTube Apache Tomcat Full Tutorial,owed by Alpha Brains Courses. https://www.youtube.com/watch?vrElJIPRw5iM&t801s 1、Overview2、Two Levels Of Web Securi…

Linux浅学笔记02

目录 grep-wc-管道符 echo-tail-重定向符 vi编辑器 grep-wc-管道符 grep命令(过滤文件内容) //更准确的来说,是筛选包括“所需字符”的一句内容或多句内容。 语法:grep [-n] 关键字 文件路径 //-n:可选,表示在结果中匹配的行…

Vue2 - keep-alive 作用和原理

目录 1&#xff0c;介绍和作用2&#xff0c;原理3&#xff0c;使用场景3.1&#xff0c;效果展示3.2&#xff0c;实现思路 1&#xff0c;介绍和作用 <!-- 非活跃的组件将会被缓存&#xff01; --> <keep-alive><component :is"activeComponent" />…

【Golang入门教程】如何使用Goland创建并运行项目

自然语言处理的发展 文章目录 自然语言处理的发展**前言**创建新项目编辑运行/调试配置编写并运行代码总结强烈推荐专栏集锦写在最后 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站: 人工…

【边缘计算】TA的基本概念,以及TA的挑战和机遇

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读文章&#xff01; 此篇是【话题达人】序列文章&#xff0c;这一次的话题是《边缘计算的挑战和机遇》 文章将以博主的角度进行讲述&#xff0c;理解和水平有限&#xff0c;不足之处&#xff0c;望指正。 目录 背景基本概念挑战…

使用DBSyncer同步Oracle11g数据到Mysql5.7中_实现全量数据同步和增量数据实时同步_操作过程---数据同步之DBSyncer工作笔记007

之前都是用mysql和Postgresql之间进行同步的,已经实现了数据的实时同步,现在要实现Oracle数据库到Mysql数据库的全量,以及增量同步. 因为之前配置的不对,这里架构名写成了orcl,所以导致,虽然能连接上,但是,在进行数据同步的时候,看不到表,所以这里说一下如何进行连接 这里,首先…

socket以及字节序

1. socket 介绍&#xff1a; 简介&#xff1a; 所谓 socket&#xff08; 套接字&#xff09;&#xff0c;就是对网络中不同主机上的应用进程之间进行双向通信的 端点的抽象。 一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换数据的机制。从所…

Vulnhub靶机:FunBox 5

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;FunBox 5&#xff08;10.0.2.30&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/funb…

C# 将HTML网页、HTML字符串转换为PDF文件

将HTML转换为PDF可实现格式保留、可靠打印、文档归档等多种用途&#xff0c;满足不同领域和情境下的需求。本文将通过以下两个示例&#xff0c;演示如何使用第三方库Spire.PDF for .NET和QT插件在C# 中将Html 网页&#xff08;URL&#xff09;或HTML字符串转为PDF文件。 HTML转…

引领AI变革:边缘计算与自然语言处理结合的无尽可能

引言 讲到Ai&#xff0c;你第一时间会想到什么&#xff1f;是Chagpt和文心一言这样与人类交流自然的Ai生成式对话服务&#xff1f;还是根据关键字快速制图的Ai绘图&#xff1f;这些都是近年来人们所常知的Ai用途&#xff0c;我们今天来讲讲以自然语言处理为辅&#xff0c;在Ai赋…

在 Python 中使用 OpenCV 通过透视校正转换图像

在计算机视觉和图像处理领域&#xff0c;透视变换是一个强大的工具。它允许我们改变图像的视角以获得新的视点&#xff0c;通常用于校正扭曲或模拟不同的相机角度。本文将探讨一个 Python 脚本&#xff0c;该脚本使用计算机视觉领域流行的 OpenCV 库对图像执行透视变换。我们将…

01-TiDB概述

分布式关系型数据库 1、支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) &#xff1a;OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)解决方案 2、无限制的水平扩容或者缩容 3、兼容MySQL &#xf…

openresty 安装, nginx与 openresty

openresty VS nginx Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;具备基础的功能如HTTP服务、负载均衡、反向代理以及动静分离等。它是许多互联网应用的核心组件&#xff0c;因其模块化和可扩展的设计而受到欢迎。1 OpenResty 是基于 Nginx 的 Web 平台&…

nodeJs+express+Vue+MongoDB

数据库【Sqlite3、MongoDB、Mysql】简介&小记 Sqlite3&#xff1a; SQLite3是一个轻量级的数据库系统&#xff0c;它被设计成嵌入式数据库。这意味着它是一个包含在应用程序中的数据库&#xff0c;而不是独立运行的系统服务。适用场景&#xff1a;如小型工具、游戏、本地…

ubuntu20根目录扩容

ubuntu根目录/ 或者 /home文件夹有时出现空间满了的情况&#xff0c;可以用gparted工具进行空间的重新分配。 首先&#xff0c;如果你是双系统&#xff0c;需要从windows系统下磁盘压缩分配一部分未使用的空间给ubuntu&#xff0c;注意压缩的空间要邻接ubuntu所在盘的位置。 …

力扣刷MySQL-第七弹(详细讲解)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

【Flink-1.17-教程】-【五】Flink 中的时间和窗口(2)时间语义

【Flink-1.17-教程】-【五】Flink 中的时间和窗口&#xff08;2&#xff09;时间语义 1&#xff09;Flink 中的时间语义2&#xff09;时间语义的分类2.1.处理时间&#xff08;process time&#xff09;2.2.摄取时间&#xff08;ingestion time&#xff09;2.3.事件时间&#xf…