第7章视图索引游标事务

上传人:我*** 文档编号:137677963 上传时间:2020-07-11 格式:PPT 页数:30 大小:100.50KB
返回 下载 相关 举报
第7章视图索引游标事务_第1页
第1页 / 共30页
第7章视图索引游标事务_第2页
第2页 / 共30页
第7章视图索引游标事务_第3页
第3页 / 共30页
第7章视图索引游标事务_第4页
第4页 / 共30页
第7章视图索引游标事务_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《第7章视图索引游标事务》由会员分享,可在线阅读,更多相关《第7章视图索引游标事务(30页珍藏版)》请在金锄头文库上搜索。

1、第7章 视图、索引、游标及事务,逯燕玲 戴红 李志明 主编,2,第7章 视图、索引、游标及事务,7.1 视图 7.2 索引 7.3 游标 7.4 事务的使用,3,7.1 视图,7.1.1 视图概述 视图是从一个表、多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。 视图不是真实存在的基础表,而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。,4,7.1.2 创建视图的方法,1. 使用企业管理器向导创建视图,【例7-1】在学籍管理数据库(students)中创建一个仅包含基础课的视图。 启动SQL Server企业管理器,在企业管理器窗

2、口中展开Microsoft SQL Servers和SQL Server组,选择SQL Server服务器。 在“工具”菜单中选择“向导”菜单项,选择工具菜单中的“创建视图向导” ,在出现的“创建视图向导”界面中单击“下一步”。,5,输入数据库名“学生学籍数据库”,单击“下一步”;输入所选数据库的选择对象对话框名“课程基本信息表”,单击“下一步”。 为对象中的列选择视图所显示的字段,单击“下一步”。用“where课程类型=基础”语句来定义所限制对话框,单击“下一步”。 将对话框命名为“课程基本信息表_VIEW”,单击“下一步”。再选择“完成”,即可成功创建视图。,6,7.1.2 创建视图的方法

3、,2. 用T-SQL创建视图 语法: CREATE VIEW view_name(column,n) WITH,n AS sellect_statement,7,【例7-2】在学籍管理数据库(students)中创建一个视图,其中内容为一门课程的成绩单,包含学生姓名。 在”工具”菜单中选择”向导”命令 CREATE VIEW SC CourseG WITH,n AS sellect SC.CNo FROM SC,Courses WHERE SC.CNo=Courses.CNo AND Courses.Cname =网络数据库);,8,【例7-3】假设在学籍管理数据库(students)中有三个

4、结构相同的学生基本信息表:S1、S2、S3,分别存放“计算机科学与技术”、“电子信息科学与技术”和“电子信息工程”专业的学生基本信息。创建一个视图将这三个表合并在一起。 USE students CREATE VIEW ALL_Students AS SELECT *FROM S1 UNION SELECT *FROM S2 UNION SELECT *FROM S3,9,7.1.3 视图信息的查看和修改,1. 使用企业管理器查看和修改视图,启动SQL Server企业管理器,登录到指定的服务器 。 打开要创建视图的数据库文件夹,选中view图标,此时在右面的窗格中显示当前数据库的所有视图。

5、右键单击要查看的视图,在弹出的快捷菜单中选择“属性”,打开View Properties对话框 。 在该对话框内可浏览到该视图的正文,也可对该视图进行修改,然后单击“Check Syntax”按钮对语句合法性进行检查,若对视图的访问权限进行设置,单击“Permissions”按钮。,10,2使用T-SQL查看和修改视图 【例7-4】查看在学籍管理数据库(students)中创建的视图DB_S_Grades。 SELECT FROM DB_S_Grades,11,当需要在视图中对数据进行插入、修改和删除等更新操作时,可与操作表数据窗口相似,同样可以对数据进行插入、修改和删除等更新操作。 还可以使

6、用INSERT、UPDATE和DELETE语句对视图数据进行更新。,7.1.4 视图数据的更新,12,在企业管理器窗口中单击“视图”选项,打开“视图列表”。在视图列表中找到要删除的视图,右键单击该视图打开其快捷菜单,选择“删除”。在出现的“除去对象”对话框中,选择“全部除去”即可完成。 还可以使用T-SQL删除视图,基本语法格式为: DROP VIEW view_name ,n,7.1.5 删除视图,13,7.2 索引,7.2.1 索引的分类 聚簇索引(Clustered Index):行的物理存储顺序与索引顺序完全相同,所以每个表只能有一个聚簇索引,且在表的主键列上自动创建聚簇索引。 非聚簇

7、索引:逻辑顺序不等于物理顺序,仅仅记录指针,通过这些指针可以在表中快速准确的定位数据。 唯一性索引(Unique Index):能够保证在创建索引的列或多列的组合上不包括重复的数据,聚簇或非聚簇索引都可以是唯一性索引。,14,创建索引前考虑的问题,只有表的拥有者才能在表上创建索引 每一个表上只能创建一个聚簇索引 每一个表上最多能创建249个非聚簇索引 一个索引最多包含16个列,最大为900字节,15,7.2.2 创建索引,1. 使用企业管理器直接创建 用鼠标右键单击要创建索引的表,选择”管理索引”菜单项。 2. 使用向导创建索引 在”工具”菜单中选择”向导”命令 3. 使用T-SQL创建索引

8、CREATE UNIQUECLUSTEREDNONCLUSTERED INDEX index_name ON table|view (columnASCDESC,n) WITH 参数 ,16,7.2.3 创建索引视图,在视图上创建唯一聚集索引可以提高性能,执行该视图结果集在数据库中的存储方式与带聚集索引的表的存储方式相同。 在视图上创建索引的另一个好处是:查询优化器开始在查询中使用视图索引,而不是直接在子句中命名视图。这样可从索引视图检索数据而无需重新编码,由此带来的高效率也使现有查询获益。,17,7.2.4 删除索引,1. 使用企业管理器直接删除索引 在要删除索引的表上单击右键,选择”所有任

9、务”中的”管理索引”命令。 2. 用T-SQL删除索引 语法: DROP INDEX table.index|view.index,n 例如:DROP INDEX Student. DEPT,18,用企业管理器查看修改索引 选择要查看的数据库表上单击右键,从快捷菜单中选择”所有任务中的“管理索引” 项,出现 “索引管理”对话框。 选择要查看或修改的索引,单击“编辑”按钮,出现“修改索引” 对话框。 可修改索引的大部分设置,还可单击“编辑SQL”按钮,在显示的SQL脚本编辑框直接修改其SQL脚本,但不能修改索引名,程序方式的索引名修改需要使用系统存储过程 Sp_rename。 要在企业管理器中修

10、改索引名、改变其所属文件组等其它信息则需要在表的属性对话框中进行,该属性对话框是从”设计表结构“对话框中调用,而不是直接通过快捷菜单的 “属性”菜单项调用。,7.2.5 查看与修改索引,19,7.3 游标,游标是系统为用户在内存中开辟的一个数据缓冲区,用于存放SQL语句的查询结果,每个游标都有一个名字,通过宿主语言的循环使SQL逐一从游标中读取记录,赋给主变量,然后由宿主语言作进一步的处理。 游标的操作一般分为如下几个步骤: 定义游标 EXEC SQL DECLARE CURSOR FOR 打开游标 EXEC SQL OPEN 推进游标 EXEC SQL FETCH INTO 关闭游标 EXE

11、C SQL CLOSE 删除游标 DEALLOCATE ,20,【例7-5】查询各种职称的教师的名单。,EXEC SQL BEGIN DECLARE SECTION; char xm8; char zc6; EXEC SQL END DECLARE SECTION; printf(”Enter 职称:”); scanf(“%s”,zc); EXEC SQL DECLARE zc_cur CURSOR FOR SELECT Tname,Ttitle FROM TEACHER WHERE Ttitle=:zc; EXEC SQL OPEN zc_cur While(1) EXEC SQL FETC

12、H zc_cur INTO :xm,:zc; if(sqlca.sqlcode0) break; EXEC SQL CLOSE zc_cur; ,21,7.4 事务的使用,7.4.1 事务概述 所谓事务,实际上就是对于一个不可分割的操作序列,控制它要么全部执行,要么都不执行。在每个事务结束时,数据库中的数据应该是一致的。 设计事务程序时应保证事务具有如下特性: 原子性(Atomicity) 一致性(Consistency) 独立性(Isolation) 持久性(Durability),22,三种执行事务的模式,显式事务:每个事务均以BEGIN TRANSACTION语句显式开始,而以COMMI

13、T TRAN或ROLLBACK TRAN等语句显式结束。 隐性事务:在T-SQL脚本中,执行“SET IMPLICIT_TRANSACTIONS ON”语句后,系统即进入隐性事务模式。 自动提交事务:如果一个T-SQL语句成功地完成,则自动提交该语句;如果遇到错误,则自动回滚该语句。,23,开始事务语句 BEGIN TRANSACTIONTRANSACTION_NAMEWITH MARKdescription 提交事务语句 COMMIT TRANSACTIONTRANSACTION_NAME 回滚事务语句 ROLLBACK TRANSACTION transaction_name| savep

14、oint_name 保存事务断点语句 SAVE TRANSACTION SAVEPOINT_NAME,7.4.2 事务处理语句,24,【例7-6】给教工“高山”增加工资100元。 BEGIN TRANSACTION UPDATE 教工登记表 SET 基本工资=基本工资+100 WHERE 姓名=高山 UPDATE 教工工资表 SET 基本工资=基本工资+100 WHERE 姓名=高山 COMMIT,25,【例7-7】在“中高级职称名册”中修改一条记录,并插入一条记录。 BEGIN TRANSACTION UPDATE 中高级职称名册 SET 职称=副教授 WHERE 姓名=王冠 INSERT

15、中高级职称名册 VALUES(SYS010,高山,男,45,1,教授,4800,计算机系) SELECT * FROM 中高级职称名册 COMMIT,26,【例7-8】将当前连接设成隐性事务状态,并进行还书。假如在还书时必须完成修改“租借信息”表和“图书信息”表两个操作,可编写如下脚本。,DECLARE 借书证号 varchar(5), 图书编号 varchar(6) SET 借书证号=00006 SET 图书编号=100006 SET IMPLICIT_TRANSACTIONS ON UPDATE 租借信息 SET 还书日期= getdate() WHERE 图书编号=图书编号 AND 借书

16、证号=借书证号 IF ERROR!=0 AND ROWCOUNT=0 BEGIN ROLLBACK TRAN RETURN END,UPDATE 图书信息 SET 状态=0 WHERE 图书编号=图书编号 IF ERROR!=0 AND ROWCOUNT=0 BEGIN ROLLBACK TRAN RETURN END COMMIT PRINT 恭喜你还书成功! SET IMPLICIT_TRANSACTIONS OFF,27,【例7-9】某一新生来借书,假如要完成办借书证和借书两个操作。办借书证操作可理解为向“学生信息”表中插入一条办证记录;借书操作为了说明方便简化为只向“租借信息”表中插入一条借书记录。编写脚本如下。,DECLARE 学号 varchar(6),姓名 varchar(10),班级 varchar(10) DECLARE 借书证号 char(5)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号