《SQL Server数据库应用技术实例教程》课件任务十一.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《SQL Server数据库应用技术实例教程》课件任务十一.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL Server数据库应用技术实例教程 SQL Server数据库应用技术实例教程课件任务十一 SQL Server 数据库 应用技术 实例教程 课件 任务 十一
- 资源描述:
-
1、任务十一任务十一 应用应用T-SQLT-SQL程序管理数据程序管理数据 应用游标及事务任务:任务:了解游标的作用,了解事务的概念及特点。应用游标管理“高职院校教学管理系统”数据库中的数据行,应用事务实现数据完整性。11.1 了解T-SQL的批处理与流程控制11.2 在“高职院校教学管理系统”数据库中应用游标 11.3 “高职院校教学管理系统”的事务实现 11.4 知识进阶 项目实训 了解游标的特点及生命周期 应用游标显示、删除、更新数据行 了解事务的概念 应用事务实施数据完整性学习目标学习目标应用游标及事务11.1 了解了解T-SQL的批处理与流程控制的批处理与流程控制任务:任务:了解SQL的
2、批处理及流程控制语句,使用流程控制语句编写代码。11.1.1 批处理11.1.2 流程控制应用游标及事务11.1.1 批处理 批是一组T-SQL语句,SQL Server 2005对T-SQL程序的编译和执行都是按“批”为单位进行的,称为批处理,以GO为结束符。批的执行是这样的:当编译器读取到GO语句时,把它前面的所有语句当作一个单位来处理,并将这些语句打包发送到SQL Server服务器。GO语句本身不被执行,只作为表示批“到此结束”的前端指令。批处理的特点是:SQL Server 服务器将批处理语句编译成一个执行单元,称为执行计划(如查询计划)。批中的某一条语句发生编译错误,将导致执行计划
3、无法继续编译,使批处理中的任何语句都不被执行,即批中语句要么编译成功都执行,要么编译不成功都不执行。某些T-SQL语句必须放在一个单独的批中进行,如CREATE语句。应用游标及事务11.1.2 流程控制流程控制语句流程控制语句用来控制语句、语句块、存储过程等的执行过程。不但可以控制语句的执行顺序,还可以使语句相互连接、关联或依存。1程序块语句(BEGIN END)将多个语句封装起来构成一个语句块,SQL Server把它当作一条语句处理。BEGIN sql_statement END2判断语句(IF ELSE)该判断语句用于条件判断,ELSE是可选的。当不包含ELSE时,构成二分支(条件)选择
4、结构。该语句最多可以嵌套32层。IF(condition_express)sql_statement 1 ELSE IF(condition_express)n ELSE sql_statement 2。应用游标及事务11.1.2 流程控制3分支判断语句(CASEWHEN)用于多条件判断,作用类似于嵌套的IFELSE语句。CASE column_name|variable_name WHEN logical_expression1 THEN result_expression1 WHEN logical_expression2 THEN result_expression2 ELSE resu
5、lt_expression END4循环语句(WHILE)用于执行循环,根据循环条件重复执行某语句块。WHILE BEGIN BREAK|CONTINUE sql_statement 2 END应用游标及事务11.1.2 流程控制5无条件退出语句(RETURN)使程序从一个查询、存储过程或批处理中无条件返回,其后面的语句不再被执行。6跳转语句(GOTO)使程序无条件从当前位置跳转到指定的程序执行点。该语句增加了程序的灵活性,但破坏了程序的结构化。7延期执行语句(WAITFOR)挂起当前语句的执行,直到指定的时间点或时间间隔到来。不能在同一个WAITFOR语句中既指定时间点,又指定时间间隔。WA
6、ITFOR TIME time|DELAY interval8检测语句(IFEXISTS)用于检测数据是否存在,和COUNT函数不同的是,它不考虑与之匹配的满足记录的执行语句,只是检测存在不存在,若发现数据存在就终止。TIME time|DELAY interval应用游标及事务11.2 11.2 在在“高职院校教学管理系统高职院校教学管理系统”数据库中应用游数据库中应用游标标 任务:任务:了解游标的特点及生命周期,应用游标 显示、删除、更新“高职院校教学管理系统”JXGL中的数据行。11.2.1 游标(CURSOR)及其特点11.2.2 游标的定义及使用方法11.2.3 应用游标管理数据应用
7、游标及事务11.2.1 游标(CURSOR)及其特点 使用SELECT语句查询数据,返回内存中的结果,称为结果集。结果集由多行数据组成,在内存中不可分,无法对某个数据行进行操作。则交互式联机应用程序需要借助游标(CURSOR)实现对结果集中数据行的处理。游标是实现对数据逐行处理的机制。应用游标及事务11.2.1 游标(CURSOR)及其特点应用游标及事务 游标最大特点是有严格的生命周期。顺序如下:定义:定义:定义游标的名称、类型和属性,其属性主要指游标所在的结果集,是一条SELECT语句。打开:打开:或称为调用,只有打开游标,才能为游标结果集填充数据,即关系到游标所在的结果集。读取:读取:从结
8、果集中读取单行的数据,在此期间游标可以在结果集中逐行移动。执行:执行:按需要对提取出的数据行进行显示、删除或更新操作,并将修改结果反馈给结果集的来源表(可以称为游标的基表)。关闭:关闭:停止使用游标的查询,但并不删除游标的定义,可再次打开游标进行数据操作。释放:释放:删除游标的定义,并释放游标占用的所有资源。11.2.2 游标的定义及使用方法 1游标的使用步骤(1)定义游标(DECLARE CURSOR)。使用DECLARE语句定义游标。基本语法如下:DECLARE cursor_name CURSOR FORWORD_ONLY|SCROLLSTATIC|KEYSET|DYNAMIC|FAST
9、_FORWARDREAD_ONLY|SCROLL_LOCKS|OPTIMISTICTYPE_WARNINGFOR select_statementFOR UPDATE OF column list,n其中:其中:FORWORD_ONLY:指定游标只能从第一行移动到最后一行。SCROLL:指定所有的提取语句都可以使用。STATIC:创建由该游标使用的数据的临时复本。KEYSET:游标打开时,游标中行的成员资格和顺序已经固定。DYNAMIC:滚动游标时对行所做的数据更新将反馈到游标基表。FAST_FORWARD:启用性能优化。READ_ONLY:禁止通过游标更新数据表。SCROLL_LOCKS:确
10、保通过游标完成的更新或删除可以成功。OPTIMISTIC:如果行读入游标后被更新,则通过游标进行的定位更新或定位删除不成功。TYPE_WARNING:游标从所请求的类型隐性地转化为另一种类型。select_statement:定义游标结果集。应用游标及事务(2)打开游标(OPEN CURSOR)。使用OPEN语句打开定义的游标。可以使用该语句多次打开还未释放掉的游标,但只能打开处于关闭状态的游标。基本语法如下:OPEN cursor_name|cursor_variable_name其中的cursor_variable_name为游标变量,取得游标提取出的列值。(3)提取数据(FETCH)。读
11、取游标的一般操作如下:FETCH NEXT|PRIOR|FIRST|LAST|ABSOLUTE(n|nvar)|RELATIVE(n|nvar)FROM cursor_name|cursor_variable_name INTO variable_name ,n 11.2.2 游标的定义及使用方法 其中:其中:NEXT:提取游标所在行的下一行,当前行自动递增为下一行。PRIOR:提取游标所在行的前一行,且当前行自动递减为前一行。FIRST:提取游标结果集的第一行,当前行指定为游标第一行。LAST:提取游标结果集最后一行,当前行指定为游标最后一行。ABSOLUTE(n|nvar):当n或nvar
12、为正数时,提取从游标头开始的第n行,并将该行指定为当前行;当n或nvar为负数时,提取从游标尾之前的第n行,并将该行指定为当前行;当n或nvar为0时,没有被提取的行。n必须为整型常量。RELATIVE(n|nvar):当n或nvar为正数时,提取游标当前行之后的第n行,并将该行指定为当前行;当n或nvar为负数时,提取游标当前行之前的第n行,并将该行指定为当前行;当n或nvar为0时,提取当前行。如果对游标的第一次提取时,n或nvar的值为负数或0,则没有返回行。INTO variable_name,n:将提取出的数据(某一个或多个列)赋值给局部变量。应用游标及事务(4)处理数据()处理数据
13、(DELETE/UPDATE)。使用DELETE、UPDATE语句对提取出的数据进行更新或删除操作,而且操作结果反馈给结果集对应的所有数据表。但是一次只能处理游标提取出的一行数据。(5)关闭游标()关闭游标(CLOSE)。)。使用CLOSE cursor_name|cursor_variable_name语句关闭暂时不用的游标。(6)释放语句()释放语句(DEALLOCATE)。)。使用 DEALLOCATE cursor_name|cursor_variable_ name语句释放不再使用的游标。11.2.2 游标的定义及使用方法 提示:释放游标与关闭游标的不同在于:关闭游标并不改变游标的定
14、义,当需要时可再次打开游标并进行数据操作;而游标一旦被释放,其定义也就被删除,该游标无法再打开,如果想再次使用该游标,必须重新定义。当从定义游标的存储过程中返回时,游标会自动关闭。应用游标及事务2应用游标管理数据应用游标管理数据 游标被打开后,自动指向结果集中第一行数据之前。每提取一行,SQL Server将修改和保存游标当前的位置,并自动向下移动一行,直到结果集中的数据行全部被提取完。(1)更新一行中的列。使用UPDATEWHERE CURRENT OF语句更新表或视图中的数据行,被更新的行依赖于游标位置的当前值。基本语法如下:UPDATE table_name|view_name SET
15、colunm_name=new_values WHERE CURRENT OF cursor_name11.2.2 游标的定义及使用方法 其中:其中:table_name|view_name:游标的SELECT 语句中的表或视图名。colunm_name:游标定义中FOR UPDATE OF column list的子集。WHERE CURRENT OF cursor_name:只能更新游标当前位置的行,游标只能是指定了更新功能并已被打开的游标。更新数据时不会自动移动游标的位置,被更新的行可再次被更新,直到执行下一个FETCH语句。提示:提示:若要更新一行中的多个列,则set colunm1_
16、name=new_values1,colunm2_name=new_ values2 应用游标及事务(2)删除指定行。被删除的行有一个唯一索引。使用DELETE WHERE CURRENT OF语句删除表或视图中的数据行,一次只能删除游标当前位置指定的一行。基本语法如下:DELETE FROM table_name|view_name WHERE CURRENT OF cursor_name11.2.2 游标的定义及使用方法 应用游标及事务3两个用于游标管理的全局变量两个用于游标管理的全局变量(1)FETCH_STATUS:保存最后一个FETCH语句执行后的状态信息,用以下几个不同的值表示不同
17、的含义:0:成功完成一个提取操作。-1:提取语句执行错误,或游标的当前位置已经是结果集中的最后一行(游标不会向下移动到下一行)。-2:指定提取的行不存在。如结果集中只有10个数据行,而指定的位置为ABSOLUTE 20。(2)rowcount:保存从游标打开后第一个提取语句被执行,一直到最后一个提取语句为止,所有被提取出的数据行数。一旦结果集中所有数据行被提取,则rowcount的值就是结果集的总行数。11.2.2 游标的定义及使用方法 应用游标及事务11.2.3 应用游标管理数据 1提取数据行提取数据行【例11-9】定义一个游标,查询教师任课信息,逐行显示教师姓名、职称、课程名及任课班级。代
展开阅读全文