首页 第7章视图索引游标事务

第7章视图索引游标事务

举报
开通vip

第7章视图索引游标事务null第7章 视图、索引、游标 及事务 第7章 视图、索引、游标 及事务 逯燕玲 戴红 李志明 主编第7章 视图、索引、游标及事务 第7章 视图、索引、游标及事务 7.1 视图 7.2 索引 7.3 游标 7.4 事务的使用 7.1 视图7.1 视图7.1.1 视图概述 视图是从一个表、多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。 视图不是真实存在的基础表,而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。 7.1....

第7章视图索引游标事务
null第7章 视图、索引、游标 及事务 第7章 视图、索引、游标 及事务 逯燕玲 戴红 李志明 主编第7章 视图、索引、游标及事务 第7章 视图、索引、游标及事务 7.1 视图 7.2 索引 7.3 游标 7.4 事务的使用 7.1 视图7.1 视图7.1.1 视图概述 视图是从一个表、多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。 视图不是真实存在的基础表,而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。 7.1.2 创建视图的方法7.1.2 创建视图的方法1. 使用企业管理器向导创建视图【例7-1】在学籍管理数据库(students)中创建一个仅包含基础课的视图。 启动SQL Server企业管理器,在企业管理器窗口中展开Microsoft SQL Servers和SQL Server组,选择SQL Server服务器。 在“工具”菜单中选择“向导”菜单项,选择工具菜单中的“创建视图向导” ,在出现的“创建视图向导”界面中单击“下一步”。 null输入数据库名“学生学籍数据库”,单击“下一步”;输入所选数据库的选择对象对话框名“课程基本信息表”,单击“下一步”。 为对象中的列选择视图所显示的字段,单击“下一步”。用“where课程类型=‘基础’”语句来定义所限制对话框,单击“下一步”。 将对话框命名为“课程基本信息表_VIEW”,单击“下一步”。再选择“完成”,即可成功创建视图。 7.1.2 创建视图的方法7.1.2 创建视图的方法2. 用T-SQL创建视图 语法: CREATE VIEW []view_name[(column[,…n])] [WITH[,…n]] AS sellect_statementnull【例7-2】在学籍管理数据库(students)中创建一个视图,其中内容为一门课程的成绩单,包含学生姓名。 在”工具”菜单中选择”向导”命令 CREATE VIEW SC CourseG [WITH[,…n]] AS sellect SC.CNo FROM SC,Courses WHERE SC.CNo=Courses.CNo AND Courses.Cname =‘网络数据库’);null【例7-3】假设在学籍管理数据库(students)中有三个结构相同的学生基本信息表:S1、S2、S3,分别存放“计算机科学与技术”、“电子信息科学与技术”和“电子信息 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 ”专业的学生基本信息。创建一个视图将这三个表合并在一起。 USE students CREATE VIEW ALL_Students AS SELECT * FROM S1 UNION SELECT * FROM S2 UNION SELECT * FROM S37.1.3 视图信息的查看和修改 7.1.3 视图信息的查看和修改 1. 使用企业管理器查看和修改视图 启动SQL Server企业管理器,登录到指定的服务器 。 打开要创建视图的数据库文件夹,选中view图标,此时在右面的窗格中显示当前数据库的所有视图。 右键单击要查看的视图,在弹出的快捷菜单中选择“属性”,打开View Properties对话框 。 在该对话框内可浏览到该视图的正文,也可对该视图进行修改,然后单击“Check Syntax”按钮对语句合法性进行检查,若对视图的访问权限进行设置,单击“Permissions”按钮。 null2.使用T-SQL查看和修改视图 【例7-4】查看在学籍管理数据库(students)中创建的视图DB_S_Grades。 SELECT FROM DB_S_Gradesnull当需要在视图中对数据进行插入、修改和删除等更新操作时,可与操作表数据窗口相似,同样可以对数据进行插入、修改和删除等更新操作。 还可以使用INSERT、UPDATE和DELETE语句对视图数据进行更新。 7.1.4 视图数据的更新null在企业管理器窗口中单击“视图”选项,打开“视图列表”。在视图列表中找到要删除的视图,右键单击该视图打开其快捷菜单,选择“删除”。在出现的“除去对象”对话框中,选择“全部除去”即可完成。 还可以使用T-SQL删除视图,基本语法 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 为: DROP VIEW {view_name} [,…n] 7.1.5 删除视图 7.2 索引 7.2 索引 7.2.1 索引的分类 聚簇索引(Clustered Index):行的物理存储顺序与索引顺序完全相同,所以每个表只能有一个聚簇索引,且在表的主键列上自动创建聚簇索引。 非聚簇索引:逻辑顺序不等于物理顺序,仅仅记录指针,通过这些指针可以在表中快速准确的定位数据。 唯一性索引(Unique Index):能够保证在创建索引的列或多列的组合上不包括重复的数据,聚簇或非聚簇索引都可以是唯一性索引。 创建索引前考虑的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 创建索引前考虑的问题只有表的拥有者才能在表上创建索引 每一个表上只能创建一个聚簇索引 每一个表上最多能创建249个非聚簇索引 一个索引最多包含16个列,最大为90 0字 个人自传范文3000字为中华之崛起而读书的故事100字新时代好少年事迹1500字绑架的故事5000字个人自传范文2000字 节7.2.2 创建索引7.2.2 创建索引1. 使用企业管理器直接创建 用鼠标右键单击要创建索引的表,选择”管理索引”菜单项。 2. 使用向导创建索引 在”工具”菜单中选择”向导”命令 3. 使用T-SQL创建索引 CREATE [UNIQUE][CLUSTERED][NONCLUSTERED] INDEX index_name ON {table|view} (column[ASC]DESC][,…n]) [WITH 参数 ] 7.2.3 创建索引视图 7.2.3 创建索引视图 在视图上创建唯一聚集索引可以提高性能,执行该视图结果集在数据库中的存储方式与带聚集索引的表的存储方式相同。 在视图上创建索引的另一个好处是:查询优化器开始在查询中使用视图索引,而不是直接在子句中命名视图。这样可从索引视图检索数据而无需重新编码,由此带来的高效率也使现有查询获益。 7.2.4 删除索引7.2.4 删除索引1. 使用企业管理器直接删除索引 在要删除索引的表上单击右键,选择”所有任务”中的”管理索引”命令。 2. 用T-SQL删除索引 语法: DROP INDEX table.index|view.index[,…n] 例如:DROP INDEX Student. DEPTnull用企业管理器查看修改索引 选择要查看的数据库表上单击右键,从快捷菜单中选择”所有任务中的“管理索引” 项,出现 “索引管理”对话框。 选择要查看或修改的索引,单击“编辑”按钮,出现“修改索引” 对话框。 可修改索引的大部分设置,还可单击“编辑SQL…”按钮,在显示的SQL脚本编辑框直接修改其SQL脚本,但不能修改索引名,程序方式的索引名修改需要使用系统存储过程 Sp_rename。 要在企业管理器中修改索引名、改变其所属文件组等其它信息则需要在表的属性对话框中进行,该属性对话框是从”设计表结构“对话框中调用,而不是直接通过快捷菜单的 “属性”菜单项调用。7.2.5 查看与修改索引7.3 游标 7.3 游标 游标是系统为用户在内存中开辟的一个数据缓冲区,用于存放SQL语句的查询结果,每个游标都有一个名字,通过宿主语言的循环使SQL逐一从游标中读取记录,赋给主变量,然后由宿主语言作进一步的处理。 游标的操作一般分为如下几个步骤: 定义游标 EXEC SQL DECLARE <游标名> CURSOR FOR 打开游标 EXEC SQL OPEN <游标名> 推进游标 EXEC SQL FETCH <游标名> INTO <主变量名表> 关闭游标 EXEC SQL CLOSE <游标名> 删除游标 DEALLOCATE <游标名> 【例7-5】查询各种职称的教师的名单。【例7-5】查询各种职称的教师的名单。EXEC SQL BEGIN DECLARE SECTION; char xm[8]; char zc[6]; 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 FETCH zc_cur INTO :xm,:zc; if(sqlca.sqlcode<>0) break; ……} EXEC SQL CLOSE zc_cur; ……7.4 事务的使用 7.4 事务的使用 7.4.1 事务概述 所谓事务,实际上就是对于一个不可分割的操作序列,控制它要么全部执行,要么都不执行。在每个事务结束时,数据库中的数据应该是一致的。 设计事务程序时应保证事务具有如下特性: 原子性(Atomicity) 一致性(Consistency) 独立性(Isolation) 持久性(Durability) 三种执行事务的模式 三种执行事务的模式 显式事务:每个事务均以BEGIN TRANSACTION语句显式开始,而以COMMIT TRAN或ROLLBACK TRAN等语句显式结束。 隐性事务:在T-SQL脚本中,执行“SET IMPLICIT_TRANSACTIONS ON”语句后,系统即进入隐性事务模式。 自动提交事务:如果一个T-SQL语句成功地完成,则自动提交该语句;如果遇到错误,则自动回滚该语句。 null开始事务语句 BEGIN TRAN[SACTION][TRANSACTION_NAME[WITH MARK['description']]] 提交事务语句 COMMIT [TRAN[SACTION][TRANSACTION_NAME]] 回滚事务语句 ROLLBACK TRAN[SACTION] [transaction_name| savepoint_name]] 保存事务断点语句 SAVE TRAN[SACTION] SAVEPOINT_NAME 7.4.2 事务处理语句 null【例7-6】给教工“高山”增加工资100元。 BEGIN TRANSACTION UPDATE 教工登记表 SET 基本工资=基本工资+100 WHERE 姓名='高山’ UPDATE 教工工资表 SET 基本工资=基本工资+100 WHERE 姓名='高山' COMMITnull【例7-7】在“中高级职称名册”中修改一条记录,并插入一条记录。 BEGIN TRANSACTION UPDATE 中高级职称名册 SET 职称='副教授' WHERE 姓名='王冠' INSERT 中高级职称名册 VALUES('SYS010','高山','男',45,1,'教授',4800,'计算机系') SELECT * FROM 中高级职称名册 COMMITnull【例7-8】将当前连接设成隐性事务状态,并进行还 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 。假如在还书时必须完成修改“租借信息”表和“图书信息”表两个操作,可编写如下脚本。 DECLARE @借书证号 varchar(5), @图书编号 varchar(6) SET @借书证号='00006' SET @图书编号='100006' SET IMPLICIT_TRANSACTIONS ON UPDATE 租借信息 SET 还书日期= getdate() WHERE 图书编号=@图书编号 AND 借书证号=@借书证号 IF @@ERROR!=0 AND @@ROWCOUNT=0 BEGIN ROLLBACK TRAN RETURN ENDUPDATE 图书信息 SET 状态=0 WHERE 图书编号=@图书编号 IF @@ERROR!=0 AND @@ROWCOUNT=0 BEGIN ROLLBACK TRAN RETURN END COMMIT PRINT '恭喜你还书成功!' SET IMPLICIT_TRANSACTIONS OFFnull【例7-9】某一新生来借书,假如要完成办借书证和借书两个操作。办借书证操作可理解为向“学生信息”表中插入一条办证记录;借书操作为了说明方便简化为只向“租借信息”表中插入一条借书记录。编写脚本如下。 DECLARE @学号 varchar(6),@姓名 varchar(10),@班级 varchar(10) DECLARE @借书证号 char(5),@图书编号 varchar(6),@借阅号 int SET @图书编号='100002' SELECT @学号='20030104',@姓名='李小军',@班级='2003-01' BEGIN TRAN SELECT @借书证号=借书证号 FROM 学生信息 ORDER BY 借书证号 SET @借书证号=convert(varchar,convert(bigint,@借书证号)+1) INSERT 学生信息(借书证号,学号,姓名,班级) VALUES (@借书证号,@学号,@姓名,@班级) IF @@error !=0 BEGIN ROLLBACK TRAN PRINT '办证失败,不能借书' RETURN ENDPRINT '办证成功,借书证号是:'+@借书证号 SAVE TRAN AA IF NOT EXISTS(SELECT * FROM 图书信息 WHERE 图书编号=@图书编号 AND 状态=0) PRINT '该书已经借出,借书失败' ELSE BEGIN SELECT @借阅号=借阅号 FROM 租借信息 ORDER BY 借阅号 INSERT 租借信息(借阅号, 借书证号, 图书编号, 借书日期) VALUES(@借阅号+1, @借书证号, @图书编号,getdate()) IF @@error !=0 BEGIN ROLLBACK TRAN aa PRINT '借书失败' END ELSE PRINT '恭喜您借书成功' END COMMIT TRAN7.4.3 分布式事务 7.4.3 分布式事务 如果要在事务中存取多个数据库服务器中的数据,那么就必须使用“分布式事务” ,将工作分散到多个服务器中进行。 执行分布式事务很简单,只要将 BEGIN TRAN[SACTION] 换成BEGIN DISTRIBUTED TRAN[SACTION]即可,其他部分都不必改动。 【例7-10】假如向“服务器1.数据库1.表1.”插入记录操作和向“服务器2.数据库2.所有者名.表2.”中插入记录操作构成一个事务,那么这个事务就是分布式事务。null【例7-10】假如向“服务器1.数据库1.表1.”插入记录操作和向“服务器2.数据库2.所有者名.表2.”中插入记录操作构成一个事务,那么这个事务就是分布式事务。主要脚本如下: BEGIN DISTRIBUTED TRAN INSERT 服务器1.数据库1.表1(a1,a2) VALUES(@a1,@a2) IF @@error!=0 BEGIN ROLLBACK TRAN RETURN END INSERT 服务器2.数据库2.所有者名.表2(b1,b2) VALUES(@b1,@b2) IF @@error!=0 BEGIN ROLLBACK TRAN RETURN END COMMIT TRANnull【例7-10】假如向“租借信息”表中插入一条记录,“图书信息”表中相应记录的“状态”列要设为1,“学生信息”表中相应记录的“借书册数”要增1。这三个操作是要么都执行,要么都不执行。可编写如下脚本 。 USE 学生图书借阅管理 GO DECLARE @借书证号 char(5),@图书编号 varchar(6),@借阅号 int SET @借书证号= '00002' SET @图书编号= '100001' IF (SELECT 状态 FROM 图书信息 WHERE 图书编号=@图书编号)=0 BEGIN BEGIN TRAN UPDATE 图书信息 SET 状态=1 WHERE 图书编号 = @图书编号 IF @@error !=0 BEGIN ROLLBACK TRAN RETURN END SELECT @借阅号=借阅号 FROM 租借信息 ORDER BY 借阅号 INSERT 租借信息(借阅号,借书证号,图书编号,借书日期) VALUES(@借阅号+1,@借书证号, @图书编号,getdate())IF @@error!=0 BEGIN ROLLBACK TRAN RETURN END UPDATE 学生信息 SET 借书册数=借书册数+1 WHERE 借书证号=@借书证号 IF @@error!=0 BEGIN ROLLBACK TRAN RETURN END COMMIT TRAN END ELSE BEGIN PRINT '该书已经被借出,借书失败' RETURN END
本文档为【第7章视图索引游标事务】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_701735
暂无简介~
格式:ppt
大小:181KB
软件:PowerPoint
页数:0
分类:
上传时间:2012-09-27
浏览量:13