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

       在机房收费系统中,对多个表的查询,要写多个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、触发器


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


四、总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸运的梦之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值