文档详情

视图、存储过程、函数、游标与触发器介绍.ppt

发布:2017-06-15约1.85万字共67页下载文档
文本预览下载声明
视图、存储过程、函数、游标与触发器 学习目标 掌握使用视图 掌握使用存储过程 掌握使用自定义标量函数、表值函数 掌握使用游标 掌握使用触发器 一、视图的定义 视图由SELECT查询语句所定义的一个虚拟表,是查看数据的一种非常有效的方式,同真实的数据表一样,视图也包含一系列带有名称的数据列和数据行,但视图与数据表又有很大的不同,视图中的数据并不真实的存在于数据库中。 1.1、视图的优点 简化查询 提供一种安全机制 视图掩码(对长的字段重新命名) 数据即时更新 1.2、视图的分类 标准视图:使用最频繁的视图,不存储任何数据,不占用任何存储空间 索引视图:拥有唯一群集索引的视图被称为索引视图,它存储真实索引数据,占用一定的存储空间。 分区视图:现在用分区表进行替代 1.2.1、标准视图 --创建带有部门编号的emp视图 SELECT dbo.EMP.EMPNO, dbo.EMP.ENAME, dbo.EMP.JOB, dbo.EMP.MGR, dbo.EMP.HIREDATE, dbo.EMP.SAL, dbo.EMP.COMM, dbo.EMP.DEPTNO, dbo.DEPT.DNAME FROM dbo.EMP INNER JOIN dbo.DEPT ON dbo.EMP.DEPTNO = dbo.DEPT.DEPTNO --通过视图修改数据 update v_emp_with_deptname set sal=800 where empno=7369 注意: (1)可以修改基于两个或两个以上基表的视图,但是每次修改只能影响一个基表,不能同时修改。 (2)不能修改通过计算得到的列、有内置函数的列以及有聚合函数的列 1.2.2、索引视图 --创建各部门人数的视图 drop view v_countOfDept go create view v_countOfDept WITH SCHEMABINDING as SELECT EMP.deptno,count_big(*) empcount FROM dbo.EMP group by emp.deptno --创建聚合索引 CREATE UNIQUE CLUSTERED INDEX i_v_countOfDept_deptno ON v_countOfDept(deptno) 注意: (1)创建索引视图,必须拥有唯一聚合索引,如果创建聚合索引,带有聚合函数的基础视图必须使用WITH SCHEMABINDING ,group by以及count_big函数 (2)使用索引视图能提高数据库效率 (3)如果视图引用任何非确定性函数,则不能在视图上创建聚集索引 1.2.3、分区视图 --创建分区视图 --将表进行行分割,emp表分解为emp1和emp2 select * into emp1 from emp where empno7782 go select * into emp2 from emp where empno=7782 go CREATE VIEW v_emp_with_1_and_2 AS SELECT * FROM emp1 UNION ALL SELECT * FROM emp2 注意:分区视图在sqlserver2005中被分区表替代 1.3、在Management Studio中创建视图 二、存储过程 存储过程是数据库系统中封装的代码模块,它采用T-SQL语言来编写,经编译后存放在数据库服务器中,具有很好的可重用性,可用于高效地完成某些操作 存储过程可以充分利用服务器的高性能运算能力,无需把大量的结果集送往客户端进行处理,大大减少了网络数据传输的开销,提高了应用程序访问数据库的速度和效率 2.1、使用存储过程的好处与特点 存储过程是已编译过的,并在服务器上注册和保存的代码模块,因而比一般的程序语句执行起来速度更快,同时减少了网络流量,节省了大量时间和数据流量。 存储过程可以使用控制语句和变量,并且在一个存储过程中可以调用其他存储过程,使得用户可以进行模块化程序设计,大大提高了用户设计程序的效率。 存储过程具有安全特性和所有权链接,可以执行所有的权限管理,用户可以被授予执行存储过程的权限,但不拥有直接对存储过程所引用对象的权限。 存储过程可以提高应用程序的安全性,防止SQL嵌入式攻击 存储过程可以允许代码绑定,引用当前不存在的对象,这些对象仅在存储过程执行时存在 2.2、存储过程的分类 用户自定义的存储过程:最主要的存储过程 系统存储过程:sp_前缀,系统预定义 扩展存储过程:保存在DLL动态链接库中并从动态链接库中执行的C++程序代码,
显示全部
相似文档