达梦数据库原理及应用-教案 项目7 以程序方式处理学生信息管理数据表_第1页
达梦数据库原理及应用-教案 项目7 以程序方式处理学生信息管理数据表_第2页
达梦数据库原理及应用-教案 项目7 以程序方式处理学生信息管理数据表_第3页
达梦数据库原理及应用-教案 项目7 以程序方式处理学生信息管理数据表_第4页
达梦数据库原理及应用-教案 项目7 以程序方式处理学生信息管理数据表_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《达梦数据库原理及应用》课程教案适用专业:计算机应用技术、软件技术、大数据技术等计算机类专业授课对象:高职一年级学生课程类型:专业基础课先修课程:计算机基础、程序设计基础一、教案基本信息项目内容章节任务7-1掌握DM_SQL编程基础授课课时4课时(180分钟)授课形式理论讲授+案例分析+分组实操教学目标1.知识目标:-熟练掌握DM_SQL常量与变量的定义、赋值及作用域规则;-深入理解流程控制语句(IF…ELSE、LOOP/WHILE/REPEAT/FOR)的逻辑及应用场景;-掌握%TYPE、%ROWTYPE的使用方法及常用函数的调用;-了解游标基础概念及异常处理的核心思路。2.能力目标:-能独立编写带变量、条件判断和循环的DM_SQL程序;-能运用循环语句实现批量插入、查询等实操任务;-能排查程序中常见的语法错误和逻辑漏洞;-能通过小组协作完成复杂数据处理任务。3.素养目标:-培养规范编码意识和严谨的逻辑思维;-提升问题解决能力和持之以恒的学习态度;-强化团队协作与沟通能力,适应职场工作需求。教学重难点重点:-变量的定义、赋值及%TYPE/%ROWTYPE的灵活应用;-循环语句(WHILE/FOR)的语法及批量插入数据的实现;-常用函数(字符串、数学)在实操中的应用。难点:-变量作用域的理解及同名变量的屏蔽规则;-循环语句的嵌套使用及终止条件的合理设置;-异常处理的基本逻辑及常见错误排查。教学资源多媒体课件、DM数据库、案例素材(STUDENT、COURSE、SC表等)、实训任务单等。思政融入通过规范编码要求,培养学生的职业严谨性和工匠精神;2.结合批量数据处理中的难点突破,引导学生树立“持之以恒、攻坚克难”的学习态度;3.分组实训中强调团队协作,培养学生的沟通配合能力,契合职场工作场景二、教学过程设计(一)课前导入(5分钟)案例导入展示实际工作场景:“某职业院校要给10000名新生建立电子档案,需向student_new表中插入10000条学号(按顺序递增)、姓名、班级等信息。如果逐条写INSERT语句,需要重复10000次,不仅耗时还容易出错。”提问引导思考:“作为计算机专业的学生,你有什么办法快速实现批量插入?如何像Python、Java一样用循环简化操作?”引出课题:“今天我们就通过DM_SQL编程基础,学习变量、循环、函数的使用,轻松解决批量数据处理问题。”(二)理论讲授(65分钟)【知识点1】:DM_SQL常量与变量-常量:明确6种常量类型(字符串、整型、日期等),重点讲解字符串(用单引号包裹)、日期常量(“年-月-日”格式)的使用,结合学生数据示例(如'20240001'学号、'2024-09-01'入学日期)。-变量:定义语法:<变量名>[CONSTANT]<变量类型>[NOTNULL][<默认值定义符><表达式>];强调变量名命名规则(字母开头、不与保留字冲突)。赋值方式:直接赋值:变量名:=表达式

SET变量名=表达式,示例:snoINT:=20240001(批量插入的学号起始值)。查询赋值:SELECT列名INTO变量名FROM表名LIMIT1,示例:获取学生表中第一条记录的姓名。高级定义:%TYPE(绑定表列类型)和%ROWTYPE(绑定表行类型),结合示例讲解优势:“当student表的sname列类型从VARCHAR(20)改为VARCHAR(30)时,用%TYPE定义的变量会自动适配,无需手动修改代码”。【易错点提醒】变量作用域:仅在定义它的语句块及下层语句块可见,同名变量下层屏蔽上层。常量定义需加CONSTANT,且只能在定义时赋值,程序中不可修改。【知识点2】:流程控制语句-BEGIN…END语句块:用于将一组语句作为整体执行;-条件分支:IF…ELSE语句:语法+嵌套示例(判断批量插入是否完成),强调ENDIF的闭合要求。CASE语句:简单格式和搜索格式,示例:根据学生成绩等级输出提示信息,对比IF…ELSE的适用场景(多分支时CASE更简洁)。-循环语句WHILE语句:语法:WHILE条件LOOP执行部分ENDLOOP,示例:从1到10000循环生成学号,插入student_new表。FOR语句:语法:FOR计数器IN下限..上限LOOP执行部分ENDLOOP,示例:批量查询1-100号学生信息。LOOP+EXIT语句:语法:LOOPIF条件THENEXIT;执行部分ENDLOOP,示例:不确定循环次数时的批量处理。REPEAT语句:语法:REPEAT执行部分UNTIL条件,对比WHILE(先判断后执行)和REPEAT(先执行后判断)的区别。【易错点提醒】循环缺少终止条件会导致死循环,需重点检查(如WHILE语句中计数器未递增)。多分支语句中ELSEIF(DM_SQL语法)不可写成ELSEIF,避免语法错误。【知识点3】:注释与常用函数-注释:3种注释方式的使用场景,强调代码注释的重要性(职业规范)。示例:给批量插入程序添加功能说明、步骤注释。-常用函数:字符串函数:CONCAT(拼接学号和姓名)、LEFT(截取学号前8位作为班级号)。数学函数:RAND(生成随机成绩)、ROUND(成绩四舍五入)。日期函数:NOW(插入当前注册日期)、YEAR(提取出生年份)。示例:INSERTINTOstudent_new(sno,reg_date)VALUES(CONCAT('2024',LPAD(sno,4,'0')),NOW())。。(三)实操练习(100分钟)1.任务布置分组(每组3-4人),完成以下任务:任务1:根据实训任务单,完成DM_SQL编程基础任务。2.过程指导教师巡视各组,重点指导:变量定义、循环条件设置、函数使用、错误排查。针对常见问题(如循环范围设置不当),集中讲解并演示修正方法。鼓励小组内成员互相帮助,分享解题思路,培养协作意识。3.成果展示选取2-3组展示实训结果,点评优点与不足,强调批量处理数据的核心思路和编程规范。(四)课堂小结与作业布置(10分钟)1.课堂小结(5分钟)回顾核心内容:常量与变量的定义与赋值、3种循环语句的应用、常用函数的调用、批量数据处理的核心思路;实操要点:变量作用域注意事项、循环终止条件设置、数据类型转换、代码注释规范。职业素养:规范编码是职场基本要求,遇到错误时需耐心排查,培养持之以恒的学习态度。2.作业布置(5分钟)1)复习本节课知识点,完成教材习题中的题目。三、教学反思1.学生对循环语句的应用是否熟练?尤其是WHILE和FOR语句的选择是否合理?2.变量作用域、数据类型转换这两个难点,学生是否能独立排查相关错误?是否需要补充专项练习?3.思政融入是否自然?学生是否能体会到规范编码和团队协作的重要性?《达梦数据库原理及应用》课程教案适用专业:计算机应用技术、软件技术、大数据技术等计算机类专业授课对象:高职一年级学生课程类型:专业基础课先修课程:计算机基础、程序设计基础一、教案基本信息项目内容章节任务7-2创建与使用存储过程和存储函数授课课时4课时(180分钟)授课形式理论讲授+案例分析+分组实操教学目标1.知识目标:-理解存储过程和存储函数的定义、特点及应用场景;-熟练掌握存储过程(无参/带参)的创建、调用、修改及删除语法;-掌握存储函数的创建、调用方法;-明确存储过程与存储函数的核心区别。2.能力目标:-能独立编写无参、带输入/输出参数的存储过程;-能创建并调用存储函数实现数据查询与计算;-能排查存储过程/函数中的语法错误和逻辑漏洞;-能通过小组协作完成复杂业务场景的存储过程开发。3.素养目标:-培养模块化编程思维和规范编码意识;-提升问题解决能力和持之以恒的学习态度;-强化团队协作与沟通能力,契合职场开发场景。教学重难点重点:-存储过程(无参/带IN/OUT/INOUT参数)的创建与调用;-存储函数的创建与调用(SELECT/CALL语句);-存储过程与存储函数的区别与适用场景。难点:-带输出参数的存储过程的参数传递与结果获取;-存储过程体中流程控制语句与SQL语句的结合使用;-存储过程/函数的错误排查(语法错误、逻辑漏洞)。教学资源多媒体课件、DM数据库、案例素材(STUDENT、COURSE、SC表等)、实训任务单等。思政融入通过模块化编程教学,培养学生“化繁为简”的逻辑思维和职场工匠精神;2.结合带参存储过程的参数传递难点,引导学生树立“严谨细致”的工作态度;3.分组实训中强调团队协作,培养学生的沟通配合能力,契合企业开发场景。二、教学过程设计(一)课前导入(5分钟)案例导入回顾任务7-1场景:“通过循环语句实现了向student_new表插入100万条记录,但如果需要在多个场景重复执行该操作,每次都要编写完整循环代码,存在冗余、维护不便的问题。”提问引导:“在Python、Java中,我们可以用函数封装重复代码,DM数据库中是否有类似机制?如何让批量插入、数据查询等重复操作更简洁高效?”引出课题:“今天我们学习存储过程和存储函数,它们是DM数据库中封装重复SQL操作的核心技术,能大幅提升开发效率和代码复用性。”(二)复习旧知(5分钟)回顾上节课核心内容:DM_SQL变量定义、流程控制语句(IF…ELSE、WHILE)、批量插入逻辑。互动提问:“如果要多次执行‘查询某班级学生信息’的操作,如何避免重复编写SELECT语句?”学生回答后总结:“存储过程和存储函数正是为解决‘代码复用、简化操作’而生,今天我们就动手掌握这一核心技能。”(三)理论讲授(60分钟)【知识点1】:存储过程和存储函数概述-定义:存储在数据库服务器中,经编译优化的一组DM_SQL语句集合,用于完成特定功能。-核心特点(优势):模块化:一次创建,多次调用,减少代码冗余;高效性:预编译执行,比单次执行SQL语句速度更快;安全性:可限制执行权限,保护敏感数据;减流量:网络中仅传输调用指令,降低网络负载。-应用场景:重复执行的操作(如批量插入、数据统计、多表关联查询)、复杂业务逻辑实现(如成绩计算、数据校验)。【知识点2】:存储过程的创建与调用-核心语法;CREATE[ORREPLACE]PROCEDURE[<模式名>.]<存储过程名>[WITHENCRYPTION]([<参数名><参数模式><参数类型>[,…]])AS|IS<存储过程体>;-关键参数说明:ORREPLACE:存在同名存储过程时覆盖;WITHENCRYPTION:加密存储过程体,防止查看;参数模式:IN(输入参数,默认)、OUT(输出参数)、INOUT(输入输出参数)。-创建存储过程示例(1)创建无参存储过程(例:查询青岛籍的学生信息)SETSCHEMAGRADEM;CREATEORREPLACEPROCEDUREproc_student_qd()ISBEGINSELECTsno,sname,classno,saddressFROMstudentWHEREsaddressLIKE'%青岛%'ORDERBYsno;END;(2)创建带输入参数的存储过程(例:查询指定班级的学生信息)SETSCHEMAGRADEM;CREATEPROCEDUREproc_student_class(in_classnoVARCHAR(8))ISBEGINSELECTsno,sname,ssex,birthdayFROMstudentWHEREclassno=in_classno;END;(3)创建带输入+输出参数的存储过程(例:统计指定学生的选课门数)SETSCHEMAGRADEM;CREATEPROCEDUREproc_student_course_count(in_snoCHAR(10),out_countOUTINT)ISBEGINSELECTCOUNT(*)INTOout_countFROMscWHEREsno=in_sno;END;-调用语法:(1)无参/带输入参数CALL存储过程名([参数值]);(CALL可省略)(2)带输出参数需先定义变量接收结果,再调用DECLAREtotalINT;BEGINCALLproc_student_course_count('2020030101',total);PRINT'选课门数:'||total;END;【易错点提醒】参数模式与变量类型必须匹配(如OUT参数需定义对应数据类型变量接收);存储过程体中SQL语句需以分号结尾,END后需加分号;调用带参数的存储过程时,参数顺序需与定义一致。【知识点3】:存储函数的创建与调用-核心语法:CREATE[ORREPLACE]FUNCTION[<模式名>.]<函数名>[WITHENCRYPTION]([<参数名><参数模式><参数类型>[,…]])RETURN<返回数据类型>AS|IS<函数体>;-关键区别:必须指定RETURN子句,参数模式默认IN,函数体中需有RETURN语句返回结果。-示例(查询指定班级的辅导员姓名):CREATEORREPLACEFUNCTIONfunc_class_header(in_classnoVARCHAR(8))RETURNVARCHAR(8)ISv_headerVARCHAR(8);BEGINSELECTheaderINTOv_headerFROMclassWHEREclassno=in_classno;RETURNv_header;END;-调用语法:SELECT语句调用(返回结果):SELECT函数名([参数值]);例:SELECTfunc_class_header('20200301');【易错点提醒】:函数必须有且仅有一个返回值,返回数据类型需与RETURN定义一致;SELECT语句调用的函数不能包含OUT/INOUT参数;函数体中RETURN语句需放在逻辑结束前。【知识点4】存储过程和存储函数的删除(四)实操练习(100分钟)1.任务布置分组(每组3-4人),完成以下任务:任务1:根据实训任务单,完成存储过程和存储函数编程任务。2.过程指导教师巡视各组,重点指导:参数定义、调用语法、错误排查;针对共性问题(如输出参数传递、函数返回值类型),集中讲解并演示修正方法;鼓励小组内成员互相分享思路,协作解决问题,记录实训过程中的关键问题及解决方法。3.成果展示选取2-3组展示实训结果,点评优点与不足,强调“代码复用”的核心价值。(五)课堂小结与作业布置(10分钟)1.课堂小结(5分钟)回顾核心内容:存储过程和存储函数的创建、调用、修改、删除;关键区别:返回值、调用方式、参数类型、应用场景。职业素养:模块化编程是职场核心技能,遇到错误时需耐心排查,培养持之以恒的学习态度。2.作业布置(5分钟)1)复习本节课知识点,完成教材习题中的题目。三、教学反思1.学生对带输出参数的存储过程的参数传递和结果获取是否掌握?是否需要补充专项练习?2.存储过程与存储函数的区别是否清晰?是否需要通过更多案例对比强化记忆?3.分组实训中,是否所有学生都参与了操作?组长的协调作用是否有效?如何优化分组分工机制?《达梦数据库原理及应用》课程教案适用专业:计算机应用技术、软件技术、大数据技术等计算机类专业授课对象:高职一年级学生课程类型:专业基础课先修课程:计算机基础、程序设计基础一、教案基本信息项目内容章节任务7-3创建与使用触发器、任务7-4掌握事务、锁的概念与应用授课课时4课时(180分钟)授课形式理论讲授+案例分析+分组实操教学目标1.知识目标:-理解触发器的定义、类型(表/事件/时间触发器)及触发机制;-掌握触发器的创建、调用、查看、禁用/启用及删除语法;-理解事务的定义、ACID特性及应用场景;-掌握事务的提交、回滚、保存点设置方法;-了解锁的基本概念、类型及并发问题(丢失更新、脏读、不可重复读)。2.能力目标:-能独立创建表触发器(插入/删除/更新触发)维护数据一致性;-能编写事务脚本实现原子性操作(如转账);-能排查触发器、事务中的语法错误和逻辑漏洞;-能通过小组协作解决实际场景中的数据一致性和并发问题。3.素养目标:-培养数据一致性意识和严谨的编程思维;-提升问题解决能力和风险防控意识(如并发问题处理);-强化团队协作与沟通能力,契合企业数据管理场景。教学重难点重点:-表触发器(行级/语句级)的创建与触发逻辑-事务的ACID特性及提交(COMMIT)、回滚(ROLLBACK)操作;-触发器与事务在数据一致性维护中的应用。难点:-触发器的触发时机(BEFORE/AFTER/INSTEADOF)与行级/语句级区别;-事务隔离级别的选择与并发问题解决;-触发器、事务、锁的协同应用(如转账场景中的数据安全)教学资源多媒体课件、DM数据库、案例素材(STUDENT、COURSE、SC表等)、实训任务单等。思政融入通过数据一致性维护教学,培养学生“精益求精”的工匠精神和职场责任意识;2.结合事务ACID特性和并发问题处理,引导学生树立“风险防控”和“严谨细致”的工作态度;3.分组实训中强调团队协作,培养学生的沟通配合能力,契合企业数据管理场景。二、教学过程设计(一)课前导入(5分钟)案例导入案例1(触发器场景):“向STUDENT表添加一条学生记录后,CLASS表中对应班级的人数字段(number)未自动更新,导致班级人数与实际不符,如何避免这种数据不一致?”案例2(事务场景):“王宁给李四转账1000元,王宁账户已扣款,但李四账户未到账(因网络故障),如何保证‘扣款’和‘到账’操作要么全成、要么全败?”引出课题:“今天我们学习触发器和事务——触发器能自动触发关联操作维护数据一致,事务能保证复杂操作的原子性,两者结合是数据库数据安全的核心保障。”(二)复习旧知(5分钟)回顾上节课核心内容:存储过程的创建与调用、模块化编程思维。互动提问:“如果用存储过程实现转账,如何避免‘扣款成功、到账失败’的情况?”学生回答后总结:“仅靠存储过程无法解决,需要事务保证操作原子性,配合触发器维护数据关联,今天我们就掌握这两个核心技术。”(三)理论讲授(60分钟)【知识点1】:触发器核心知识-定义与核心作用:触发器是特殊的存储过程,当预定义事件(INSERT/UPDATE/DELETE、DDL、系统事件)发生时自动激活执行,无需手动调用。核心作用:维护数据一致性(如学生表与班级表人数关联)、实现复杂业务逻辑(如数据备份、权限校验)。-触发器分类(重点讲表触发器):表触发器:基于表数据操作触发(INSERT/UPDATE/DELETE),分3类:按触发时机:BEFORE(操作前触发)、AFTER(操作后触发)、INSTEADOF(替代原操作,仅适用于视图);按触发级别:行级触发器(FOREACHROW,每影响一行触发一次)、语句级触发器(默认,每个操作触发一次)。事件触发器:基于DDL或系统事件触发(如登录、创建表);时间触发器:基于时间规律触发(如每月28日备份)。-核心语法:CREATE[ORREPLACE]TRIGGER[<模式名>.]<触发器名>[WITHENCRYPTION]<BEFORE|AFTER|INSTEADOF><触发事件列表>ON<表名|视图名>[FOREACHROW[WHEN<条件表达式>]]<触发器体>;-关键参数:触发事件列表:INSERT/UPDATE[OF列名]/DELETE;:OLD与:NEW引用:行级触发器中,:OLD表示操作前数据,:NEW表示操作后数据(INSERT仅:NEW有效,DELETE仅:OLD有效)。-示例:(维护班级人数一致性)SETSCHEMAGRADEM;--向STUDENT表插入记录后,自动更新CLASS表对应班级人数CREATEORREPLACETRIGGERtrig_student_insertAFTERINSERTONSTUDENTFOREACHROWBEGINUPDATECLASSSETnumber=number+1WHEREclassno=LEFT(:NEW.sno,8);--学号前8位为班级号END;【易错点提醒】:行级触发器需加FOREACHROW,否则默认语句级(仅触发一次,不管影响多少行);:OLD/:NEW仅在表触发器的行级触发中可用,语句级触发器不可用;触发器体中SQL语句需以分号结尾,避免语法错误。【知识点2】:事务-定义与ACID特性(核心):事务是不可分割的数据库操作序列,要么全执行,要么全不执行。ACID特性:原子性(Atomicity):操作“全成或全败”,无部分执行;一致性(Consistency):事务执行后数据库从一个一致状态到另一个一致状态(如转账前后总金额不变);隔离性(Isolation):并发事务互不干扰;持久性(Durability):事务提交后,数据修改永久有效。-事务控制语法:开始事务:第一个可执行SQL语句隐含开始;提交事务:COMMIT[WORK](确认修改,永久生效);回滚事务:ROLLBACK[WORK](撤销未提交修改,恢复初始状态);保存点:SAVEPOINT保存点名(设置中间节点,可回滚到指定节点)、ROLLBACKTOSAVEPOINT保存点名。-示例(转账事务):SETSCHEMABANKINFO;BEGIN--王宁账户扣款1000UPDATEBANKSETcurrentmoney=currentmoney-1000WHEREcustomername='王宁';SAVEPOINTsp1;--设置保存点--李四账户到账1000UPDATEBANKSETcurrentmoney=currentmoney+1000WHEREcustomername='李四';--验证王宁账户余额是否≥1,否则回滚DECLAREv_moneyDECIMAL(13,2);SELECTcurrentmoneyINTOv_moneyFROMBANKWHEREcustomername='王宁';IFv_money<1THENROLLBACKTOsp1;--回滚到保存点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论