您的位置:首页 > 数据库

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

2016-05-25 17:19 281 查看
视频终于结束了,下面是对视频20集的总结,思维导图的思路首从建立以及操作数据库开始,有了数据库之后,我们就要在数据库中建立表,对表的操作我们需要通过编程语句来实现,最后就是要保证数据的安全性,其中包括备份。



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

一:视图

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

2.作用:

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

3.应用举例

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







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

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

创建视图步骤:

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

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



总结:上面对于这些概念的理解只是表面的一些东西,还没有深层次应用过吗不过相信学习是一个循序渐进的过程,现在对于一些理解的不是太透彻,在以后的学习过程中会不断深刻,相信自己。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: