SQLServer数据库应用技术实例教程 任务11 应用T-SQL程序管理数据

上传人:沈*** 文档编号:244393404 上传时间:2024-10-04 格式:PPT 页数:39 大小:890.50KB
返回 下载 相关 举报
SQLServer数据库应用技术实例教程 任务11 应用T-SQL程序管理数据_第1页
第1页 / 共39页
SQLServer数据库应用技术实例教程 任务11 应用T-SQL程序管理数据_第2页
第2页 / 共39页
SQLServer数据库应用技术实例教程 任务11 应用T-SQL程序管理数据_第3页
第3页 / 共39页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,任务十一,应用,T-SQL,程序管理数据,应用游标及事务,任务:,了解游标的作用,了解事务的概念及特点。应用游标管理“高职院校教学管理系统”数据库中的数据行,应用事务实现数据完整性。,11.1,了解,T-SQL,的批处理与流程控制,11.2,在“高职院校教学管理系统”数据库中应用游标,11.3 “,高职院校教学管理系统”的事务实现,11.4,知识进阶,项目实训,了解游标的特点及生命周期,应用游标显示、删除、更新数据行,了解事务的概念,应用事务实施数据完整性,学习目标,应用游标及事务,11.1,了解,T-SQL,的批处理与流程控制,任务:,了解,SQL,的批处理及流程控制语句,使用流程控制语句编写代码。,11.1.1,批处理,11.1.2,流程控制,应用游标及事务,11.1.1,批处理,批是一组,T-SQL,语句,,SQL Server 2005,对,T-SQL,程序的编译和执行都是按“批”为单位进行的,称为批处理,以,GO,为结束符。,批的执行是这样的:当编译器读取到,GO,语句时,把它前面的所有语句当作一个单位来处理,并将这些语句打包发送到,SQL Server,服务器。,GO,语句本身不被执行,只作为表示批“到此结束”的前端指令。,批处理的特点是:,SQL Server,服务器将批处理语句编译成一个执行单元,称为执行计划(如查询计划)。批中的某一条语句发生编译错误,将导致执行计划无法继续编译,使批处理中的任何语句都不被执行,即批中语句要么编译成功都执行,要么编译不成功都不执行。,某些,T-SQL,语句必须放在一个单独的批中进行,如,CREATE,语句。,应用游标及事务,11.1.2,流程控制,流程控制语句,用来控制语句、语句块、存储过程等的执行过程。不但可以控制语句的执行顺序,还可以使语句相互连接、关联或依存。,1,程序块语句(,BEGIN END,)将多个语句封装起来构成一个语句块,,SQL Server,把它当作一条语句处理。,BEGIN,sql_statement,END,2,判断语句(,IF ELSE,),该判断语句用于条件判断,,ELSE,是可选的。当不包含,ELSE,时,构成二分支(条件)选择结构。该语句最多可以嵌套,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,result_expression,END,4,循环语句(,WHILE,),用于执行循环,根据循环条件重复执行某语句块。,WHILE ,BEGIN,BREAK|CONTINUE ,sql_statement,2,END,应用游标及事务,11.1.2,流程控制,5,无条件退出语句(,RETURN,),使程序从一个查询、存储过程或批处理中无条件返回,其后面的语句不再被执行。,6,跳转语句(,GOTO,),使程序无条件从当前位置跳转到指定的程序执行点。该语句增加了程序的灵活性,但破坏了程序的结构化。,7,延期执行语句(,WAITFOR,),挂起当前语句的执行,直到指定的时间点或时间间隔到来。不能在同一个,WAITFOR,语句中既指定时间点,又指定时间间隔。,WAITFOR TIME time|DELAY interval,8,检测语句(,IFEXISTS,),用于检测数据是否存在,和,COUNT,函数不同的是,它不考虑与之匹配的满足记录的执行语句,只是检测存在不存在,若发现数据存在就终止。,TIME time|DELAY interval,应用游标及事务,11.2,在“高职院校教学管理系统”数据库中应用游标,任务:,了解游标的特点及生命周期,应用游标,显示、删除、更新“高职院校教学管理系统”,JXGL,中的数据行。,11.2.1,游标(,CURSOR,)及其特点,11.2.2,游标的定义及使用方法,11.2.3,应用游标管理数据,应用游标及事务,11.2.1,游标(,CURSOR,)及其特点,使用,SELECT,语句查询数据,返回内存中的结果,称为结果集。结果集由多行数据组成,在内存中不可分,无法对某个数据行进行操作。则交互式联机应用程序需要借助游标(,CURSOR,)实现对结果集中数据行的处理。游标是实现对数据逐行处理的机制。,应用游标及事务,11.2.1,游标(,CURSOR,)及其特点,应用游标及事务,游标最大特点是有严格的生命周期。顺序如下:,定义:,定义游标的名称、类型和属性,其属性主要指游标所在的结果集,是一条,SELECT,语句。,打开:,或称为调用,只有打开游标,才能为游标结果集填充数据,即关系到游标所在的结果集。,读取:,从结果集中读取单行的数据,在此期间游标可以在结果集中逐行移动。,执行:,按需要对提取出的数据行进行显示、删除或更新操作,并将修改结果反馈给结果集的来源表(可以称为游标的基表)。,关闭:,停止使用游标的查询,但并不删除游标的定义,可再次打开游标进行数据操作。,释放:,删除游标的定义,并释放游标占用的所有资源。,11.2.2,游标的定义及使用方法,1,游标的使用步骤,(,1,)定义游标(,DECLARE CURSOR,)。,使用,DECLARE,语句定义游标。基本语法如下:,DECLARE,cursor_name,CURSOR FORWORD_ONLY|SCROLL,STATIC|KEYSET|DYNAMIC|FAST_FORWARD,READ_ONLY|SCROLL_LOCKS|OPTIMISTIC,TYPE_WARNING,FOR,select_statement,FOR UPDATE OF column list,n,其中:,FORWORD_ONLY,:指定游标只能从第一行移动到最后一行。,SCROLL,:指定所有的提取语句都可以使用。,STATIC,:创建由该游标使用的数据的临时复本。,KEYSET,:游标打开时,游标中行的成员资格和顺序已经固定。,DYNAMIC,:滚动游标时对行所做的数据更新将反馈到游标基表。,FAST_FORWARD,:启用性能优化。,READ_ONLY,:禁止通过游标更新数据表。,SCROLL_LOCKS,:确保通过游标完成的更新或删除可以成功。,OPTIMISTIC,:如果行读入游标后被更新,则通过游标进行的定位更新或定位删除不成功。,TYPE_WARNING,:游标从所请求的类型隐性地转化为另一种类型。,select_statement,:定义游标结果集。,应用游标及事务,(,2,)打开游标(,OPEN CURSOR,)。,使用,OPEN,语句打开定义的游标。可以使用该语句多次打开还未释放掉的游标,但只能打开处于关闭状态的游标。基本语法如下:,OPEN,cursor_name,|,cursor_variable_name,其中的,cursor_variable_name,为游标变量,取得游标提取出的列值。,(,3,)提取数据(,FETCH,)。,读取游标的一般操作如下:,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,为正数时,提取从游标头开始的第,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,)处理数据(,DELETE/UPDATE,)。,使用,DELETE,、,UPDATE,语句对提取出的数据进行更新或删除操作,而且操作结果反馈给结果集对应的所有数据表。但是一次只能处理游标提取出的一行数据。,(,5,)关闭游标(,CLOSE,)。,使用,CLOSE,cursor_name,|,cursor_variable_name,语句关闭暂时不用的游标。,(,6,)释放语句(,DEALLOCATE,)。,使用,DEALLOCATE,cursor_name,|,cursor_variable,_ name,语句释放不再使用的游标。,11.2.2,游标的定义及使用方法,提示:释放游标与关闭游标的不同在于:关闭游标并不改变游标的定义,当需要时可再次打开游标并进行数据操作;而游标一旦被释放,其定义也就被删除,该游标无法再打开,如果想再次使用该游标,必须重新定义。当从定义游标的存储过程中返回时,游标会自动关闭。,应用游标及事务,2,应用游标管理数据,游标被打开后,自动指向结果集中第一行数据之前。每提取一行,,SQL Server,将修改和保存游标当前的位置,并自动向下移动一行,直到结果集中的数据行全部被提取完。,(,1,)更新一行中的列。,使用,UPDATEWHERE CURRENT OF,语句更新表或视图中的数据行,被更新的行依赖于游标位置的当前值。基本语法如下:,UPDATE,table_name,|,view_name,SET,colunm_name,=,new_values,WHERE CURRENT OF,cursor_name,11.2.2,游标的定义及使用方法,其中:,table_name,|,view_name,:游标的,SELECT,语句中的表或视图名。,colunm_name,:游标定义中,FOR UPDATE OF column list,的子集。,WHERE CURRENT OF,cursor_name,:只能更新游标当前位置的行,游标只能是指定了更新功能并已被打开的游标。更新数据时不会自动移动游标的位置,被更新的行可再次被更新,直到执行下一个,FETCH,语句。,提示:,若要更新一行中的多个列,则,set colunm1_name=new_values1,colunm2_name=new_ values2,应用游标及事务,(,2,)删除指定行。,被删除的行有一个唯一索引。使用,DELETE WHERE CURRENT OF,语句删除表或视图中的数据行,一次只能删除游标当前位置指定的一行。基本语法如下:,DELETE FROM,table_name,|,view_name,WHERE CURRENT OF,cursor_name,11.2.2,游标的定义及使用方法,应用游标及事务,3,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!