【数据库】视图 存储过程 触发器 事物

首先从建立以及操作数据库开始,有了数据库之后,我们就要在数据库中建立表,对表的操作我们需要通过编程语句来实现,最后就是要保证数据的安全性,其中包括备份。

为了实现数据库操作的高效以及完整性,引入了视图,存储过程,触发器,事物等一系列的操作,下面就说一下我对视图,存储过程 触发器以及事物的理解

 

一:视图:

1、视图是一张虚拟的表,字段可以由我们自己定义,视图查询出来的数据只能进行查看,不能增删改

2.作用:

通过视图可以把我们想查询的信息显示在一个表里,为减少数据冗余只存放基本信息,可是当想看更细的信息的时候需要多表之间的联系,为了少写select语句,我们就要在多个表中创建视图。

3.应用举例:

下面我们敲学生时用到的三张表,分别是学籍表,班级表,年级课程表

  1.  我们想了解一个学生所选择的课程,假如每张表中存放了100000条记录,现在有三张表,每张表都执行查询,那么程序的性能是否会下降,查询的效率是否会很低?

  2. 基于这样的考虑,我们就想到用视图,让不同的表中的信息在一张表中显示出来,这样可以减少查询的次数,以提高程序的性能

创建视图步骤:

1.先联合学籍,班级表:

select a.student_ID,a.student_name,a.class_no,b.grade from 学籍表a,班级表b where a.class_no=b.classno

2.得到的表再联合上年级课程表

select a.student_ID,a.student_name,a.class_no,b.grade,c.course_name from 学籍表a,班级表b,年级课程表c where a.class_no=b.classno and b.grade=c.grade_id

3.创建视图

这样我们就可以得到一个包含学号,姓名,班号,年级,课程的新的表,我们需要为查询到的结果建立一个视图,等再次查看的时候调用这个视图就可以,减少查询量。下面是视图的创建:

create view table_1(

select a.student_ID,a.student_name,a.class_no,b.grade,c.course_name from 学籍表a,班级表b,年级课程表c where a.class_no=b.classno and b.grade=c.grade_id)
 

 

二:存储过程:

1.存储过程相当于自定义函数,可以被调用,存储过程是一系列预先编辑好的,能实现特定操作功能的SQL代码集,他与特定数据库相关联,存储在SQL Server服务器上。

2.优点

 

3.应用举例:
  定义一个存储过程:从员工信息表和部门信息表中返回员工信息。

  Create proc p_enployee

  @departementid varchar(10),      

  @zhiwei varchar(20)

  As

     Select A.员工姓名,A.性别,A.所任职位,A.联系电话,B.部门名称

     From 员工信息 A, 部门信息 B

    Where A.所在部门编号=B.部门编号 AND B.部门编号=@departmentid  AND A.所任      职位=@zhiwei

 

   调用存储过程:

   Exec p_employee @departmentid=’10001’,@zhiwei=’主管’
 

 

三:触发器

1.触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。执行触发器是执行触发器中定义的操作,主动工作。

2.应用举例:

定义一个update的触发器

执行update操作:

Update 姓名,年龄,家庭住址

当执行update操作时,会触发这个触发器,此触发器执行的功能是如果更改姓名和性别,则会显示事物不能被处理,然后回滚此次操作,也就是说教师信息表里的数据除了姓名和性别两列之外,都可以更改,然后会显示数据修改成功。

 

四:事务:


1.是指一个操作序列,要么都被执行,要么都不被执行,不可分割,事务即使指我们可以预先推测出这个地方可能会发生错误,如果发生错误则把前面执行的操作全部取消,这时就需要定义一个事务处理过程,用来回滚事务,让程序回到没有操作之前的状态。

2.应用举例:
小明要向小红转100块钱,此时银行需要做的事情就是:

一:小红卡里多100块钱

二:小明卡里少100块

这样才算交易成功,但是如果小明卡里多了100,而小红卡里的钱没有少,这是就会产生错误,这时就需要定义一个事务用于回滚到交易之前的状态,即与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新小明卡里的余额信息时发生异常、这将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步在更新小明卡里的余额失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱。

下面我们定义了一个事务,输入学生信息,如果输入是汉族,则继续执行操作,否则回滚事务,即不添加此学生的信息,使系统信息回到添加此学生信息之前的状态。
 

commit transaction 继续操作  rollbacktransaction 回滚事务

 

总结:上面对于这些概念的理解只是表面的一些东西,还没有深层次应用过吗不过相信学习是一个循序渐进的过程,

现在对于一些理解的不是太透彻,在以后的学习过程中会不断深刻,相信自己。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值