【机房重构】——视图,触发器,存储过程的使用

在机房收费系统中,对多个表的查询,要写多个SQL是很麻烦的事情,为了方便我们写代码,同时对代码进行解耦和,我们引用了视图,触发器,存储过程。

一、是什么?

视图

从若干个基本表和其他视图构造出来的虚拟表。视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata。

触发器

特殊的存储过程,此机制是由事务触发而完成的,而不是存储过程的调用。

存储过程

一组完成特定功能的SQL语句集合以及流程控制语句编写的模块,存储过程经过编译后存储在数据库服务端的数据库中,使用时调用即可。

二、为什么?

视图

(1)提供了用户访问的接口,用户不必知道底层的表结构是什么样的,当表改变时,只需改变视图的语句,而客户端不许改变,降低了耦合性

(2)加强了安全性,用户只能看到视图提供的那部分数据,其他的看不到

(3)简化了数据库的访问操作

存储过程

(1)提高运行速度,调用存储过程的速度会比执行一条SQL语句要快的多。

(2)只需编译一次即可,而SQL语句使用一次编译一次。

(3)可以反复调用,减轻了程序编写的工作量

(4)增强了SQL的功能和灵活性,能完成复杂的楼及判断和复杂运算

触发器

(1)通过数据库中的相关表来实现级联操作。

(2)自动执行

(3)触发器可以强制用比CHECK约束定义的约束更为复杂的约束。(这一点不太理解)

。。。。。。

三、怎么用?

1、创建视图后,使用时和使用表一样。

Create View <视图名>(<列表序列>)

AS<SELECT 查询语句>

2、存储过程

例如:机房收费系统中的充值操作,当进行充值操作时,要在充值表中添加一条充值记录,并更新卡表里的卡余额。

3、触发器

例如:机房收费系统中的退卡操作,当进行退卡操作时,要在退卡表里更新一条记录,并在卡表里删除对应的卡。

四、总结

上面的两张图是从师傅博客总截的图。视图用过了,触发器和存储过程还没有使用。虽然触发器和存储过程有这么多优点,但我们要慎用,拒绝滥用。

时间: 2024-10-12 13:19:38

【机房重构】——视图,触发器,存储过程的使用的相关文章

机房重构——视图

视图.存储过程.触发器等等早就听说过,却没有真正接触过,一直处在一个以后再说的状态中,逃是逃不掉了. 机房重构,重构出了什么?留着这个疑问.重构完以后再做总结. 视图:在SQL中,外模式一级数据结构的基本单位是视图,就是从若干个基本表和(或)其他视图构造出来的表.其实就是一张虚表. 注意:在使用视图的时候,应当提前设置好关联表的主外键. 在机房收费系统里功能之一,学生查看余额时,用到了两张表的内容,Card表里的状态和余额,其他信息都来自学生表. 视图的创建和删除: 方法一:使用SQL语句创建视

视图 触发器 存储过程 函数 流程过程 索引 慢查询

视图 触发器 存储过程 函数 流程过程 索引 慢查询 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 1.什么是视图 ? 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 ? 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调

【机房重构】—触发器经营离婚事务所

最近了解到了触发器,现在我的理解是更喜欢把触发器当成特殊的存储过程(触发器:通过对这个表的操作为依据处罚之后可以对另外的表进行一系列操作),那么此刻我就将触发器如何经营离婚事务所的过程和大家分享: 一.经营漏洞(触发器的缺点): 当一对夫妇有了闪离的念头,冲动之余就拿着结婚证来找触发器(离婚事务所)了:此时触发器是不会在乎你俩是否真的认定了要离婚(是否应不应该触发这个事件),只要你将结婚证给了他并大概说一些理由,他就会给你们办理离婚手续(执行符合条件之后要处罚的过程),大家都知道,离婚手续一旦办

Mysql学习---视图/触发器/存储过程/函数/索引 180101

视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由于视图是虚拟表,所以无法使用其对真实表进行创建.更新和删除操作,PyMysql是支持视图的. 仅能做查询用. 创建视图: create VIEW stu as select * from student; # 这里只是建立了一个对应关系,视图是虚表,动态获取数据 select * from stu;

数据库 --- 40 视图 触发器 存储过程 事务 函数

一.视图  (view) 视图是一种虚拟表,可以把查询出来的临时表保存下来 1.创建视图 2.删除视图 3.修改视图,(原始表的记录也跟着修改) 4.查看视图 二.  触发器(trigger)可进行  增删改  操作 1.创建触发器 2.删除触发器 实例: 三.存储过程  1. 优点: 缺点: 2.程序与数据库结合使用的三种方式 3.创建简单存储过程(无参) 4.创建存储过程(有参) ① in  传入参数 ② out  返回值 #查看存储过程的一些信息:show create procedure

MySql中的视图 触发器 存储过程,以及事物

视图: 一个临时表被反复使用的时候,对这个临时表起一个别名,方便以后使用,就可以创建一个视图,别名就是视图的名称.视图只是一个虚拟的表,其中的数据是动态的从物理表中读出来的,所以物理表的变更回改变视图. 创建: create view v1 as SQL 例如:create view v1 as select * from student where sid<10 创建后如果使用mysql终端可以看到一个叫v1的表,如果用navicate可以在视图中看到生成了一个v1的视图 再次使用时,可以直接

【机房重构】SQL之视图

最近在重构机房收费系统,越往后就会越感觉到这里更多的是对之前学过知识(数据库,设计模式)的一种应用和回顾.比如在登录功能中用到了抽象加反射,在学生下机中,我们可以用触发器来同时更新两个表.这里就先说一下视图的使用,关于视图的有点和作用百度上有很多答案,在此不再赘述. 视图定义: 自己理解:在涉及到多张表的操作的时候就可使用视图.这样可以避免与数据库直接联系.并且当你更新数据库数据时,就会自动更新视图中的数据,方便以后查询. 百度百科:计算机数据库中的视图是一个虚拟表,其内容由查询定义.同真实的表

机房重构(4)——触发器的使用

上篇文章<机房重构(3)--存储过程>介绍了存储过程的使用,接下来介绍一下触发器的使用.说到触发器,我们并不陌生,我们学习过程中涉及到很多相关的知识,但是欠缺的实践应用.通过这次机房收费,对触发器有了进一步的理解. 1.简介 触发器也是一种与表事件相关的特殊的存储过程.由事件来触发,当对一个表进行操作(insert,delete,update)时就会激活它执行.经常用于加强数据的完整性约束和业务规则等.它与存储过程的区别是触发器不能执行EXCUTE语句调用,而是在用户执行Transact_SQ

【机房重构】SQl之存储过程

上篇博客介绍了SQl视图的使用,这篇博客通过内容和实例应用来简单介绍一下存储过程. 在机房重构的过程中,犯了个大忌(数据库设计在重构过程被修改了),所以影响了一个功能的实现,就又重新敲了一下机房收费系统退卡功能.正如"塞翁失马,焉知非福",纯三层的代码实现变成了利用存储过程之后的完美实现.期间的磕磕绊绊都让我们对存储过程加深了理解. 存储过程: 定义: 当需要写多条SQl语句的时候,就可以使用存储过程,在数据库中建立存储过程.之后在VS中通过调用存储过程来使用. 百度百科:存储过程(S

【机房重构】——存储过程(Stored Procedure)

[前言] 在学习数据库知识时,就曾经接触过存储过程,当时只是如蜻蜓点水一般,短暂的停留,并没有留下什么印象,在进行机房重构学习过程中,又重新认识了存储结构,从开始的抵触,不想用到后来逐渐了解,学着使用,思路越来越清晰,真正去做了才发现了其中的乐趣:常常说学习需要多总结,现在就是在积累,每一次的收获都要整理记录,才能留下深刻的印象,下面就来学习一下存储过程的知识吧. [存储过程的概念] 在采用客户机/服务器(C/S)计算模式的数据库系统中,很多工作可以在客户端完成,也可以在服务器端完成,数据库除了