数据库应用技术教程 教案全套:郑冬松_第1页
数据库应用技术教程 教案全套:郑冬松_第2页
数据库应用技术教程 教案全套:郑冬松_第3页
数据库应用技术教程 教案全套:郑冬松_第4页
数据库应用技术教程 教案全套:郑冬松_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

PAGE第页XX大学

教案

202X~202X学年第1学期课程名称数据库系统教学承担单位数理学院系部(教研室)统计与信算系授课班级24信算任课教师郑冬松职称副教授XX大学教务处制二○二年九月

XX大学教案编写基本要求教案是教师在教学工作中依据人才培养目标和教学大纲的要求,在认真研读教材和参阅有关教学资料的基础上,以课时为单位设计的课堂教学方案,教师要精心设计和组织好每一次课为单元的授课内容和进程,认真按照教案编写要求写好所任课程的教案。具体要求如下:1、任课教师必须以课程教学大纲为依据,在深入研究教材内容,了解学生基本情况的基础上,根据课程的内容和特点编写出教案。2、授课时间和周次严格按照校历表上的时间进行安排。任课教师在重复讲授本门课程,教案必需根据实际情况的变化作必要的补充和相应的调整。3、教案书写的具体格式可因学科、专业、课程性质的差异而不同,但应包括课程简介,教学重点难点及教案基本内容和过程。教案基本内容和过程一般还应包括教学方法及手段,作业、讨论题、思考题和教学单元小结等。4、每门课程首页只需要填写一份,讲师及以上职称的教师一学期须写两份此教案,其他教师一次课须写一份课程教案,每项页面大小可自行添减。5、课程类别包括公共基础课、学科基础课、专业必修课、专业选修课、集中实践环节、实验课、公共选修课等。

教案(首页)课程名称数据库系统课程编号092153601L总学时:64学时理论:32学时实践:32学时周学时:4学时课程类别专业必修课学分3任课教师郑冬松职称副教授授课对象专业班级:24信算课程简介《数据库系统》主要培养学生应用数据库基本知识,进行数据库管理系统维护和数据库应用系统开放的能力。是本科计算机专业和信算专业的主干课程,是一门理论与实践紧密联系的课程,直接关系到学生的理论分析能力和综合动手能力的培养。具体说来,本课程的教学目标在于使学生具备以下几方面的知识和能力:1、首先,通过课程学习,使得绝大多数同学,掌握数据库基本理论,理解数据库系统的基本原理和技术;2、其次,让大部分同学,能熟练使用SQL语言和特定的数据库管理系统上进行数据库的各项操作;3、再次,通过课程学习,让部分基础较好、学习能力较强的同学掌握数据库设计的基本方法和步骤,具有设计数据库模式以及开发数据库应用系统的基本能力。基要本参教考材资和料主教材名称作者出版社及出版时间《数据库应用技术教程(SQLServer2022)-微课视频版》郑冬松清华大学出版社,2026年X月指定参考书作者出版社及出版时间《数据库系统概论(第6版)》王珊等高等教育出版社,2023年出版TOC\h\c"表"16790表1第一单元数据库概述 -2-22893表2第二单元数据库和数据表的创建与管理 -4-3072表3第三单元数据的完整性和表中数据操作 -8-29633表4第四单元数据查询1 -11-18282表5第四单元数据查询2 -14-8677表6第四单元数据查询3 -17-13898表7第四单元数据查询4 -20-14611表8第五单元SQL2022中视图和索引的应用 -23-20408表9第六单元数据库编程技术基础 -27-8777表10第七单元存储过程的应用 -34-18117表11第八单元触发器的应用 -39-15422表12第九单元数据库安全性管理 -45-7181表13第十单元事务管理 -51-6555表14第十一单元数据库的日常维护 -54-28048表15第十二单元数据库应用系统开发基础 -60-28520表16第十三单元关系规范化与数据库设计 -63-表SEQ表\*ARABIC1第一单元数据库概述授课时间202X年X月X日授课周次第1周授课方式(请打√)理论课□√讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第一单元数据库概述教学目的、要求:理解本课程在本专业教学计划中的重要地位以及学习的必要性;了解本课程的课程框架、教学目的,推荐必读参考书和选读参考书;了解本课程教学内容,并指出重点和难点部分;了解本课程的实验安排和要求;提出学习本课程的学习方法;理解和掌握数据库的基本概念;了解数据库技术的产生和发展;了解数据库系统的特点。教学重点及难点:课程框架,课程难点和重点内容;DBMS的定义、产生和作用。教学基本内容和过程(可增加页)1、课堂导入请学生思考我们身边有哪些数据库管理系统,简单列举数据库技术在其中的应用,并引导学生从自己专业角度考虑数据库学习的重要性(约10分钟)。2、教学内容与时间安排(1)课程介绍约30分钟课程框架介绍教学目的介绍推荐必读参考书和选读参考书(并作简单点评)主要内容安排重点和难点部分实验安排和要求学习方法和忠告(2)数据与信息(学生阅读教程,超星互动答题,大概20分钟)问题1:什么是数据?什么是信息?他们的联系是什么?数据是描述事物的符号记录。从计算机的角度来看,所谓数据是指一切能被计算机存储和处理,反映客观实体信息的物理符号。从数据中获得的有意义的内容称为信息。数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。问题2:什么是数据处理?为了从大量原始的数据中提取、推导出对人们有价值的信息,对数据进行的分类、组织、编码、存储、检索和维护一系列活动的总和叫数据处理。问题3:数据处理三世界是?现实世界、信息世界、机器世界(3)联系(讲解+学生互动举例15分)问题4:联系分为?实体内部各属性之间的联系;实体与实体之间的联系(1:1,1:n,m:n)。(4)什么是数据库?什么是数据库管理系统?什么是数据库系统?(讲授或互动10分)按照一定的格式,永久存储在计算机上,有组织、可共享的大量的数据的集合。问题5:DBMS的意思是?数据库管理系统。课程案例图书馆的书籍管理;

超市的商品库存管理,商品售出及进货记录,商品销售额统计;

公司员工的考勤记录;

虚拟社区的用户信息;

汽车站,火车站等售票系统;

等等等等只要是涉及到大量数据的存储及修改,查询,统计等操作就需要用到数据库技术。4、单元小结通过本单元的学习,学生了解了数据库原理与应用课程的框架,对课程重要性有一定认识;了解了数据、数据库、数据库管理系统、数据库系统的定义和作用,了解了联系的种类和表示方法,为后续的课程内容打下了基础。5、教学方法案例介绍、理论讲授、多媒体课件、超星互动课后作业布置要求学生在课余时间了解目前有哪些典型的数据库系统,各有什么特点。完成第一章课后习题(超星测试)。

表SEQ表\*ARABIC2第二单元数据库和数据表的创建与管理授课时间202X年X月X日授课周次第2周授课方式(请打√)理论课□√讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第二单元数据库和数据表的创建与管理教学目的、要求:1.了解系统数据库的作用;2.掌握数据库文件存储结构;3.掌握创建数据库的多种方法;4.掌握修改、删除数据库;5.掌握管理和维护数据库;6.了解数据库属性;7.掌握SQLServer2022中的数据类型;8.掌握建立数据表的方法;9.掌握查看、修改和删除数据表的方法。教学重点及难点:数据库的创建方法,SQLServer2022常用的数据类型(重点);数据库的管理-数据库迁移,使用ManagementStudio及SQL语句创建和管理数据表(难点)教学基本内容和过程(可增加页)1、课堂导入上节知识回顾:提问什么是数据库?什么是数据库管理系统,什么是数据库系统?学生回顾上节知识后,引出本节内容,数据库管理系统有哪些?如何建立数据库呢?(约8分钟)2、教学内容与时间安排(1)SQL2022数据库的体系结构(4分钟)系统数据库介绍(各个系统数据库的作用)数据库文件的种类、扩展名,建立一个数据库,并提出问题:建立一个数据库至少需要哪些数据库文件呢?学生选课数据库的创建(8分钟)首先,介绍SQL2022的运行环境,如何选择数据库服务(数据库引擎服务),如何选择或填入服务器等;然后,用ManagementStudio演示逐步创建数据库(包括操作起点,数据取名,逻辑文件名,物理文件名等);最后,介绍ManagementStudio中编写和运行代码的位置,并用sql语句CreateDatabase创建数据库。发布任务,学生答题(8分钟)创建销售管理数据库,数据文件在d:\data,数据文件逻辑名称为sales_data,文件名为sales_data.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;该数据库的日志文件,逻辑名称为sales_log,文件名为sales_log.ldf,初始大小为3MB,最大尺寸为5MB,增长速度为1MB。通过超星设置互动-拍照互动,让学生参考书本上的代码,模仿编写,然后拍照提交。在大屏幕上投影展示学生答案,解析点评错误展示答题,并点评(3分钟);学习使用图形化以及sql语句对数据库各种属性进行修改(修改扩充数据文件和事务日志的容量)(5分钟);其它数据库管理操作(更改数据库名称、打开关闭、分离附加等)(4分钟)。SQL2022中表的基本概念和数据类型(10分钟)表是组织和管理数据的基本单位;常用的数据类型(数值型,字符型以及适用场景);课件互动:让学生选择合适的数据类型;列的属性(是否为空,是否标识)。学生选课数据库的表的创建(15分钟)首先,介绍使用ManagementStudio图形化操作创建学生表(注意为空性的选择);然后,使用CREATETABLE语句创建表(提醒学生易错地方如:表的名字、每行后面的英文逗号等);最后,介绍如何使用模板创建数据表(了解)。学生选课数据库的表的管理(15分钟)查看表结构和表中数据的操作修改表使用ManagementStudioAltertable语句修改表(超星拍照互动)在学生表里加一列,兴趣爱好,可以为空删除刚添加的列将性别列改为char(4)删除和重命名表3、课程案例(1)创建学生选课管理数据库。将该数据库的数据文件存储在D:\Data下,数据文件的逻辑名称为Stu_data,文件名为Stu_data.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;该数据库的日志文件,逻辑名称为Stu_log,文件名为Stu_log.ldf,初始大小为3MB,最大尺寸为5MB,增长速度为1MB。(2)代码添加和删除数据文件。alterdatabase学生选课1addfile(name=stu_Data3,filename='f:\stu_data3.ndf',size=10MB,maxsize=2GB,filegrowth=10MB)alterdatabase学生选课1removefilestu_Data3把销售管理数据库转移到e:\。(4)在学生选课数据库中,利用ManagementStudio创建学生表。(5)在学生选课数据库中,利用CreateTable语句,创建课程表和选课表。CREATETABLECourse(--创建课程表Cnochar(6)NOTNULL,Cnamechar(20)NOTNULL,Credittinyint,Semestertinyint)CREATETABLESC--创建选课表(Snochar(5)NOTNULL,Cnochar(6)NOTNULL,Gradetinyint)GO4、单元小结通过本单元的学习,学生了解了SQL2022数据库的存储结构,及SQL2022中常用的数据类型,学会根据实际需求选择适当的数据类型,掌握创建和管理库和数据表的2种方法(ManagementStudio图形化操作,和代码操作)。5.教学方法操作演示、理论讲授、多媒体课件、超星互动课后作业布置完成课堂教学中未完成的课程案例。

表SEQ表\*ARABIC3第三单元数据的完整性和表中数据操作授课时间202X年X月X日授课周次第3周授课方式(请打√)理论课□√讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第三单元数据的完整性和表中数据操作(3.4-3.5)教学目的、要求:掌握使用主键约束和惟一约束保证数据表的完整性、使用检查约束、默认值保证列的完整性;掌握使用主键和外键来保证数据表之间的完整性;掌握表中数据的添加、修改和删除的方法。教学重点及难点:数据表完整性的分类和实现(重点);外键的理解和实现(难点)。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(10分钟):(1)学生回顾上节内容,并完成任务2:请使用SQL语句创建一个表,表中包含3个字段(序号,姓名,性别),其中序号为自动增加列;(2)完成后,引出本节内容:数据库创建好了,数据表也有了,接下来准备向数据表中添加数据了,可怎么保证数据表中的数据的真实性,让表中数据和实际相符合同时减少错误呢?本节,我们将学习数据的完整性,也就是解决数据和实际一致的问题。教学内容与时间安排(1)完整性的定义和要求(30分钟)认识完整性的分类和定义,先对照下图整体讲解,然后就各种完整性分别举例。得出,各种完整性对表中数据的要求,如:实体完整性要求表中不允许存在如下的记录:无主码值的记录;主码值相同的记录。参照完整性要求外码的取值:或者值为空;或者等于其所引用的关系中的某个元组的主码值。讲到参照完整性时,提问:学生选课数据库中那个表里有外键?随机提问(2)约束的意义、分类和实现(40分钟)完整性是现实世界对数据的要求,就像老师要求大家上课要认真听讲一样,不过光有要求不行,必须有措施或手段保证要求的实现。老师要通过安排座位、上课提问互动等形式,达到让大家上课认真听讲的目的,数据库通过约束,保障完整性要求的实现。约束(Constraint)是MicrosoftSQLServer2022提供的自动保持数据库完整性的一种方法。约束就是限制,定义约束就是定义可输入表或表的单个列中的数据的限制条件。约束种类 实现的完整性主关键字约束(PrimaryKeyConstraint) 实体完整性外关键字约束(ForeignKeyConstraint) 参照完整性惟一约束(UniqueConstraint) 实体完整性检查约束(CheckConstraint) 用户自定义完整性默认约束(DefaultConstraint) 用户自定义完整性分别使用图形化操作和代码,实现各种约束,然后展示这些约束的效果。3、课程案例(1)在学生选课数据库中给各个表添加主键、外键;(2)让姓名唯一;(3)确保学生的性别输入值只能是“男”或“女”;(4)在学生选课数据库中的学生表中,新学生如果不到特定系部的话,新学生全部到计算机系。4、单元小结通过本单元的学习,使学生了解什么是数据完整性,掌握使用主键约束和惟一约束保证数据表的实体完整性;使用检查约束、默认值保证列的完整性;掌握使用主键和外键来保证数据表之间的完整性。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置第三章课后习题。

表SEQ表\*ARABIC4第四单元数据查询1授课时间202X年X月X日授课周次第4周授课方式(请打√)理论课□√讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第四单元数据查询1教学目的、要求:掌握SELECT语句语法格式;掌握最基本的查询技术;掌握条件查询技术。教学重点及难点:查询语句的基本结构和查询思维(重点)。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(10分钟):(1)通过提问回顾上节内容:什么是实体完整性,如何实现实体完整性?什么是参照完整性,如何实现参照完整性?要求机器上完成任务(视机器情况而定,部分机房机器启动速度慢,可能无法实现):设置学生表的姓名为唯一健。使用altertable命令,为选课表添加外键约束。完成后,引出本节内容:数据库的操作主要是数据的增、删、改、查,就像我们的朋友圈,大家天天看,刷刷朋友的动态,看得多,发的少,数据库的工作也是如此,查询占到日常工作的80%以上,所以,掌握数据查询的技术,是学习数据库中最为重要的内容之一。SQLServer为我们提供的专门用于查询的语言--SQL(结构化查询语言),学习掌握SQL也是本课程最为重要的内容。假设,我们要得到如下信息,我们该怎样做?(引发学生带着问题学习)在学生选课系统数据库中能根据按照指定的要求灵活、快速地查询相关信息。如:查询所有学生的学号,姓名和年龄。查询信息系学生的学号,姓名和出生年份。查询所有学生中年龄最大、最小的学生学号和姓名。查询女生人数,平均年龄。教学内容与时间安排(1)Select语句的基本结构(5分钟)SELECT<目标列名序列>--需要哪些列FROM<数据源>--来自于哪些表[WHERE<检索条件>]--根据什么条件[GROUPBY<分组依据列>][HAVING<分组筛选条件>][ORDERBY<排序依据列>]对照以上语法结构,适当解释,要找什么?也就是表中的哪些列,写在select语句中,这些列是哪个表中的,把这个表的名字写在from子句中,按照或者根据什么条件找数据,把条件表述在where子句中,最基本的条件是“某列(列名)=值”,下面的暂时不讲。(2)简单查询(60分钟)选择列:查询表中部分列;查询表中所有列;查询经过计算的列;增加常量列;显示列标题(列标题别名);选择行:消除重复的行(distinct,举例,若问选课的学生学号,同一个学号说多次,没有意义,这是可以通过distinct消除重复的行);查询满足条件的元组(where)--如下表,逐一举例,同时引导学生思考写出代码;查询条件谓

词比较运算符=,

>,

>=,

<,

<=,

<>(或!=)NOT+比较运算符

确定范围BETWEEN…AND,

NOT

BETWEEN…AND确定集合IN,

NOT

IN字符匹配LIKE,

NOT

LIKE

空值IS

NULL,

IS

NOT

NULL逻辑谓词AND,

OR3、课程案例学生选课数据库中,假定信息需求,尝试用SQL语句实现,如:查询信息系全体学生的姓名。查询年龄在20岁以下的学生的姓名及年龄。查询考试成绩有不及格的学生的学号。(本题注意题意,要求结果学号不重复,和实际一样)查询年龄在或不在21~23岁之间的学生的姓名、所在系和年龄。查询信息系、数学系和计算机系学生的姓名和性别。查询学生表中姓‘张’、‘王’和‘李’的学生的情况。查询名字中第2个字为‘小’或‘晓’的学生的姓名和学号。查询所有不姓“王”也不姓“李”的学生姓名。查询姓刘且名字是3个字的学生姓名。(本题注意使用函数消除空格,给学生提及数据类型定义)4、单元小结通过本单元的学习,使学生掌握SELECT语句语法格式;掌握最基本的查询技术;掌握各种条件的表述和查询思维:找什么--从哪找--有什么条件。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置课后习题相关内容。

表SEQ表\*ARABIC5第四单元数据查询2授课时间202X年X月X日授课周次第5周授课方式(请打√)理论课R讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第四单元数据查询2教学目的、要求:多重条件查询;掌握排序、分组、统计。教学重点及难点:多重条件查询(难点);分组查询的理解(重难点)。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(13分钟):带学生回顾查询语句的基本结构,然后通过练习了解学生掌握情况,练习如下:查询所有选课学生的学号;查询考试成绩有不及格的学生的学号;查询既不姓郑又不姓王的学生学号和姓名;查询信息系和数学系的学生姓名和所在系。采用超星拍照互动的形式,学生在机房电脑写代码,然后截图或者复制代码到超星,老师通过电子教室广播点评学生的答案。完成后,引出本节内容:上次课我们学习了基本的查询表达,能够把查询要求按SQL语句结构表述出来,但查询要求较为复杂,如有多个查询条件,我们又该如何表达呢?还有,有时候我们需要一些统计的数据,如:想知道有多少学生,有多少男生,选1号课程的人有多少?等等,我们需要使用计算函数,如:count、sum、max等来实现这些要求;还有,若我们要查询的是每一个类别的统计情况,如:我们要查询每个系有多少人,每个性别有多少人,每个课程有多少人选修等等,统计的不在是表中所有数据,也不是符合条件的数据,而是每一种情况的统计,这时候,就需要用到分组groupby,让计算函数的作用范围更细;查询结果若感觉比较乱,可以用排序,让结果更友好。多条件查询、计算函数、分组、排序就是本节要学习的内容。2、教学内容与时间安排多重条件查询(8分钟)使用逻辑运算符AND和OR来组成多条件查询典型案例:查询计算机系和信息系年龄大于等于21岁的学生姓名、所在系和年龄。易错说明:注意查询条件之间的逻辑关系,是查询2个系中年龄大于21的学生。对查询结果进行排序(orderby)(3分钟)注意多排序关键词的表达方式,不能使用2个orderby使用计算函数汇总数据(8分钟)COUNT(*):统计表中元组个数;COUNT([DISTINCT]<列名>):统计本列列值个数;SUM([DISTINCT]<列名>):计算列值总和;AVG([DISTINCT]<列名>):计算列值平均值;MAX([DISTINCT]<列名>):求列值最大值;MIN([DISTINCT]<列名>):求列值最小值。注意区分count和sum函数的区别,注意count(*)和count(列名)的区别对查询结果进行分组统计(25分钟)了解分组统计的作用和目的以及语句表达分组语句的一般形式: GROUPBY<分组依据列>[,…n] [HAVING<组选择条件>]使用动态图形(ppt动画)或者动画形式,演示分组的运算步骤。注意分组筛选和where的区别:WHERE子句用来筛选FROM子句中指定的数据源所产生的行数据;GROUPBY子句用来对经WHERE子句筛选后的结果数据进行分组;HAVING子句用来对分组后的结果数据再进行筛选。课堂练习,提交超星(15分钟)查询数学系女生学号和姓名,查询结果按学号升序排列查询每个系学生人数,按人数降序排列查询选课人数在2人以上的课程的课程号查询选课门数大于等于3门的学生的学号,和选课门数,按选课门数的降序排列3、课程案例以学生选课数据库为例,进行多条件、排序、分组、分组筛选等知识点讲解4、单元小结通过本单元的学习,学生掌握多条件查询技术;掌握排序、分组、统计查询的实现,注意使用分组的场景,一般是对每一种情况进行统计的时候需要使用。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置课后习题相关内容

表SEQ表\*ARABIC6第四单元数据查询3授课时间202X年X月X日授课周次第6周授课方式(请打√)理论课R讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第四单元数据查询3教学目的、要求:集合查询;多表连接查询。教学重点及难点:多重条件查询(难点);分组查询的理解(重难点)。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(13分钟):带学生回顾查询语句的基本结构特别是groupby后面部分,使学生进一步理解并掌握何时要分组,什么情况下要用分组后的筛选(having),然后通过练习了解学生掌握情况,练习如下:查询选课人数大于等于3人的课程号和选课人数。A.select课程号,选课人数fromstudentwhere选课人数>=3B.selectcno,count(*)选课人数fromscwhere选课人数>=3C.selectcno,count(*)选课人数fromscgroupbycnohavingcount(*)>=3D.selectcno,count(*)选课人数fromscgroupbycnowherecount(*)>=3采用超星单选题互动的形式,学生可在机房电脑调试,然后做出选择,老师通过电子教室广播讲解。完成后,引出本节内容:上次课我们学习了较为复杂的单表查询,包括排序、分组、分组筛选等内容,从刚刚的选择题得分率看,大多数同学已经掌握了单表查询的核心技术,可实际的数据库应用系统中不可能只有一张表,例如,学生选课这个数据库,里面就有三张表,每个表记录一个主题信息,student表记录学生的基本信息,course表记录课程信息,sc表记录学生的选课信息,我们也不好把这三个表合成一个,因为会有很多数据冗余,还会有其他的数据问题。那这样,当我们要查询的数据涉及到两个以上的表的时候,如:我们要查询“刘超华选课的课程号和成绩”,明显,单单student表没有我们要的数据,单单sc表也看不出来哪个是“刘超华”的选课,我们必须把这2个表结合起来查询,也就是要使用多表连接查询技术。另外,我们在查询中,有时候发现一些问题不太方便直接表达,但可以通过连接、相交、差集等集合操作去实现,也就是使用集合查询实现,本节,我将重点学习多表连接查询和集合查询。2、教学内容与时间安排集合查询(8分钟)使用集合查询关键词:union、intersect、except进行集合的并、交、差运算注意:参加联合查询操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。举例如下:查询选修了1号课程或选修了2号课程的学生的学号。查询既选修了1号课程又选修了2号课程的学生的学号。查询选修了1号课程但没有选修2号课程的学生的学号。通过以上例题,使学生掌握三个关键词的基本用法,然后进行综合举例,如下:查询学生表,列出除数学系的女生外,所有学生的学号、姓名、所在系和性别。分析查询需求,理清思路,最好辅以集合图形,并提供多种解题方法。连接查询的定义及内连接(35分钟)内连接语法如下:SELECT…FROM表名[INNER]JOIN被连接表ON连接条件执行连接操作的过程--看步骤,原表截图演示(snipaste)或使用动画例题分析讲解(师生同步,半屏广播)学生超星拍照互动,题目如下:查询选修了“高等数学”的学生的姓名,考试成绩。自身连接(10分钟)自身连接:相互连接的表物理上为同一张表。必须为两个表取别名,使之在逻辑上成为两个表。注意理解,特别是为什么要把一个表看作是两张表,完全出入查询需要考虑,可以使用2表连接的形式表达。为区分,可以将查询条件叫表一和查询结果展示列为表2。超星拍照互动:查询和数据库同一个学期开设的课程的课程名和学分。外连接(10分钟)了解外连接的作用和意义--避免因内连接抛弃不符合连接条件的数据。只限制一张表中的数据必须满足连接条件,而另一张表中数据可以不满足连接条件。外连接的语法格式为: FROM表1LEFT|RIGHT[OUTER]JOIN表2ON<连接条件>举例区分left和right。例题56-59,分析讲解(师生同步,半屏广播)课堂练习,提交超星(15分钟,若时间不够可作为课后练习)查询数学系男生的选课情况。查询选修了数据库的学生的学号和姓名。查询和数据库同一学期开设的其它课程的课程名和开课学期。查询没有选课的学生的学号和姓名。3、课程案例以学生选课数据库为例,进行集合查询、多表连接查询等知识点讲解4、单元小结通过本单元的学习,学生了解集合查询和多表连接查询的应用场景,结合具体查询案例,使学生掌握内连接、自身连接、外连接的sql表达,进一步建立查询思维,并在实战中提高sql代码编写能力。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置第四章课后习题

表SEQ表\*ARABIC7第四单元数据查询4授课时间202X年X月X日授课周次第7周授课方式(请打√)理论课R讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第四单元数据查询4教学目的、要求:子查询(嵌套查询、CTE子句);在数据更新中使用查询语句;窗口函数的使用。教学重点及难点:子查询(重点);相关子查询、窗口函数的理解(难点)。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(15分钟):带学生回顾自身连接查询,明确自身查询其实就是利用2表连接的查询原理,查找同一个表中有关联的数据;回顾外连接,了解如何显示内连接丢弃的数据。然后通过练习了解学生掌握情况,3个练习如下:查询和数据库同一学期开设的其它课程的课程名和开课学期。查询没有选课的学生的学号和姓名。统计信息系每个学生的选课门数,包括没有选课的学生,结果按选课门数递减排序。前2题引导学生一起练习,第3题让学生通过超星拍照上传,老师通过电子教室广播讲解点评。完成后,引出本节内容:我们已经掌握了单表查询技术以及多表连接查询技术,是不是我们现在就无所不能了呢?还是回到上次说的那个问题,我们要查询所有学生中年龄最大的学生的学号和姓名以及年龄,发现似乎还是没法解决,因为where里面不能使用聚合函数,但是我们的表达里面就是要表达年龄是最大年龄的那个学生,如果我们把查询分为两步走,先查询所有学生中最大的年龄值,然后再查询所有年龄为这个年龄的学生的学号姓名以及年龄,问题是不是就解决了?这种方法就是我们今天要学习的子查询。2、教学内容与时间安排子查询(40分钟,大部分例子老师讲解演示,学生跟着思考或者同步机器调试)子查询的定义基于集合的子查询进行比较测试不相关子查询CTE子句(介绍清楚cte的作用,在某些情况下可以简化子查询)课堂互动:例:查询考试平均成绩高于全体学生的总平均成绩的学生的学号和平均成绩。相关子查询(存在性查询)例:查询选修了1课程的学生姓名。解释执行过程,帮助学生理解并掌握。进一步举例如下:例:查询没有选修1号课程的学生姓名和所在系。注意:不能使用多表连接中否定的做法。课堂互动:查询计算机系没有选修“java”课程的学生的姓名和性别。SELECTSname,SsexFROMStudentWHEREnotexists(SELECT*FROMSCJOINCourseONSC.Cno=Course.CnoWHERECname='java'andSC.sno=student.sno)ANDSdept='计算机系'CTE子句例:在选课表Sc中,查询选课人数超过平均选课人数的课程号及其选课人数。分别用子查询和CTE实现,老师分析思路,完成代码,学生体会用CTE的优势(就像创建了一个临时表,有了这个临时表,查询思路更加清晰,更容易表述)。在数据更新中使用查询语句。(15分钟)一次插入多行设stu_cs为计算机系的学生表,结构和student一致,但无数据,请将计算机系的学生信息添加进去。一次更新多行将计算机系全体学生的成绩加5分。将学分最低的课程的学分加2分。数学系学生的“信息系统”考试成绩增加10分。删除符合条件的数据删除计算机系不及格学生的修课记录。(基于其他表条件的删除)删除信息系考试成绩不及格学生的不及格课程的选课记录。(较复杂的数据删除)窗口函数的使用。(10分钟)窗口函数的语法结构函数名(参数)OVER([PARTITIONBY分区列]--按指定列将数据分区,每个分区为独立窗口[ORDERBY排序列[ASC|DESC]]--对分区内数据按指定列排序[ROWS|RANGEBETWEEN边界定义]--定义窗口框架范围(SQLServer2022增强特性))主要函数包括:ROW_NUMBER、RANK、SUM、AVGOVER子句:用于定义“窗口”,其中PARTITIONBY将数据划分为多个独立分区(类似分组),ORDERBY指定分区内数据的排序方式,ROWS|RANGE则进一步限定窗口内参与计算的行范围(如“前2行到当前行”)。窗口函数在学生选课数据库中的应用用例4.56-4.59给学生演示讲解,使学生清楚窗口函数的优势:数据划分多个独立分区,实现分区内的统计或聚合计算。3、课程案例本次课结束时,综合举例,假设学生信息分布在各个以系为名字的表里,总学生表里没有学生所属系的信息,如何更新总表,填上学生所在系,代码如下:updatestudentsetsdept=(selectsdeptfrom(selectsno,sdeptfromstu_csunionselectsno,sdeptfromstu_isunionselectsno,sdeptfromstu_ma)stuwherestudent.sno=stu.sno)本例用到查询生成表,集合查询,更新中使用查询语句等知识。4、单元小结通过本单元的学习,学生了解子查询的定义和使用,学会使用子查询解决复杂的查询问题,了解相关子查询的使用场景,并能使用学到的查询知识,解决较为复杂的实际问题,进一步巩固查询思维,并在实战中提高sql代码编写能力。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置第四章课后习题

表SEQ表\*ARABIC8第五单元SQL2022中视图和索引的应用授课时间202X年X月X日授课周次第8周授课方式(请打√)理论课R讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第五单元SQL2022中视图和索引的应用教学目的、要求:理解视图的作用;掌握创建视图、修改视图和删除视图的方法;理解索引的优点和缺点;掌握使用CREATEINDEX语句创建索引的方式;掌握查看、删除和修改索引。教学重点及难点:使用managementstudio创建满足不同需要的视图。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(5分钟):带学生回顾子查询,子查询包括相关子查询和不相关子查询,各有各的应用场景,不相关子查询子查询的运行不依赖父查询,只查询的结果作为父查询的条件,这样我们就可以将复杂的问题分步逐一解决。(如查询和数据库学分相同的课程的名称和学分。)而相关子查询,子查询的运行依赖于父查询的条件,根据子查询的真假判断父查询当前行是否是要求的结果。(如查询没有选修的1号课程的学生的学号和姓名。)下面通过一个超星互动选择题来回顾上一讲的知识。练习如下:查询选了1号课程,但没有选2号课程的学生的学号和姓名。选项如下:A、selectsno,snamefromstudent

wheresnoin(selectsno

fromscwherecno='1'andsnonotin(selectsnofromscwherecno='2'))B、selectsno,snamefromstudent

whereexists(select*fromsc

wheresno=student.snoandcno='1')andnotexists(select*fromscwheresno=student.snoandcno='2')C、selects.sno,snamefromstudentsjoinscons.sno=sc.snowherecno='1'exceptselects.sno,snamefromstudentsjoinscons.sno=sc.snowherecno='2'D、selects.sno,snamefromstudentsjoinscons.sno=sc.snowherecno='1'andcno!='2'E、selectsno,snamefromstudent

wheresnoin(selectsnofromscwherecno='1')andnotexists(select*fromscwheresno=student.snoandcno='2')以上选项,A是使用不相关子查询解决问题,B使用相关子查询解决问题,C是使用集合查询解决问题,E是使用相关和不相关都参与的方式及问题,D是在两表连接中使用否定形式是错误的。先设定5分钟学生参与超星互动,然后根据答题情况,老师通过电子教室广播讲解点评。完成后,引出本章节内容(3分钟):这一次课我们学习第5章视图和索引的应用,这是相对独立的一个章节。视图就是存储在数据库中的SQL语句,他只存放定义,不存放数据,数据还是从它所对应的查询表中来,所以我们可以把经常要写的查询保存为视图,例如我们经常要做多表连接,查询学生的选课情况,就可以把学生的选课情况做成一个视图,这样学生的基本信息都包括进去,想查什么就像是单表查询一下,肯定会方便许多。而所以也是一个独立的数据库对象,有点像图书的目录,很明显图书的目录能增加我们的查阅效率,索引的功能也是如此。下面我们开始学习的两种对象。2、教学内容与时间安排视图(35分钟)视图的定义视图的作用一简化操作,二提高数据的安全性,三屏蔽数据库的复杂性,四数据及时更新(举例说明)。创建视图图形化界面创建用例:5-1,注意讲清楚窗口各部分名称,注意如何出现表和表之间的连线(主键)SQL代码语法格式:CREATEVIEW视图名[(column[,...n])][WITHENCRYPTION]ASselect_statement[WITHCHECKOPTION]注意相关参数的说明,特别是WITHCHECKOPTION参数的说明。用例:5-2,5-3注意讲代码定义视图中的列名细节和代码中参数使用的意义。练习演练创建一个视图,使其统计每个学生的考试平均成绩和修课总门数。创建一个包含每门课程的课程号,课程名,选课人数,平均成绩的视图。创建每个系的平均年龄的视图sdept_avg_sage。第1题,老师使用图形化操作演示,注意演示清楚如何产生的分组依据,如何填写聚合函数等细节。第2题,代码演示,要求学生一起操作,特别注意列名的定义和使用。第3题,学生自己实现,老师巡视查看学生情况,要求完成同学弹幕。视图的管理修改视图alterview删除视图dropview查看视图系统存储过程sp_help老师演示讲解。视图的应用利用视图查询数据(容易)利用视图更新数据(注意条件,更新数据要保证转换成对基本的正确操作)索引。(35分钟)索引的作用每一行记录都包括数据表中一列或若干列值的集合,而不是数据表中的所有记录,因而能够提高数据的查询效率。索引的分类聚集索引和非聚集索引表中的行的物理存储顺序和索引顺序完全相同(聚集)非聚集索引不改变数据行的物理存储顺序。惟一索引(设置主键或设置唯一键时)索引和约束的关系(PRIMARYKEY、UNIQUE)独立索引创建索引使用ManagementStudio(表上右键-设计-选择列右键-索引/键)使用CREATEINDEX语句CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]/*索引的类型*/INDEX索引名ON{表名|视图名}列名[ASC|DESC][,...n])例5.9CREATEINDEXIX_snameONstudent(sname)删除索引DropindexSname_index注:主键带来的索引只能删除主键才能删掉索引查看索引用系统存储过程sp_helpindex重命名索引Sp_rename'表名.原索引名称','新索引名称'--和改表的列名类似3、课程案例。穿插在课程之中,仍然以学生选课数据库中创建各种视图和索引为例。4、单元小结通过本单元的学习,了解视图和索引的作用和存在价值,会使用视图简化查询、提高效率,能理解索引在提高查询速度上的作用,掌握创建索引的图形化和代码方法。了解这两种数据库对象的使用场景,并能使用学到的新知识,解决实际问题,进一步巩固数据库思维,并在实战中提高数据库系统的操作能力。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置第5章课后习题

表SEQ表\*ARABIC9第六单元数据库编程技术基础授课时间202X年X月X日授课周次第9周授课方式(请打√)理论课R讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第六单元数据库编程技术基础教学目的、要求:正确理解和掌握使用SQLServer变量;掌握SQLServer函数的使用;掌握流程控制语句;掌握编写顺序结构、选择结构和循环结构的程序;游标的基本使用。教学重点及难点:case语句(难点);游标的使用(难点);如何使用流程控制语句增强sql的功能(重点)。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(10分钟):回顾第5章视图和索引中,视图的定义和索引的作用。随机提问形式,了解同学们对上节课程基本内容的掌握情况,对于索引的作用可以举例说明。举例如下:declare@ibigint=1--产生10万行记录的表while@i<=100000begininsertintostuuvalues(@i,'zds'+convert(varchar(20),@i))set@i=@i+1endaltertablestuualtercolumnsnobigintnotnull--添加主键前准备altertablestuu--添加主键addconstraintpk_snoprimarykey(sno);select*intostuu1--产生另外的表fromstuu比较查询效率selectcount(*)fromstuu1selectcount(*)fromstuuselectsno,snamefromstuu1wheresno=95888完成后,引出本章节内容:我们已经掌握了单表查询技术以及多表连接查询技术,以及多表连接技术中较复杂的相关和不相关子查询,我们的数据库技术有了较大的进步。但有时要实现更为复杂的查询的时候,目前掌握的SQL技术,还是会有力不从心的感觉,SQL里面能不能编程呢?如果能把变量和结构控制语句,也用到SQL技术里面,那我们的SQL语句是不是就更强大了呢?当然可以。今天我们就开始学习,怎样在SQL代码里面使用编程技术,包括变量、流程控制语句、函数和游标。2、教学内容与时间安排SQL编程基础(5分钟)注释变量的定义和使用print语句流程控制语句。(35分钟)顺序Beginend分支Ifelse循环While例1:计算1+2+3+…+100的和。结合数据库举例例2:查询选修3号课程的学生的平均成绩是否大于60分,输出相应的提示信息。declare@qintset@q=60if(selectAVG(grade)fromSCwhereCno='3')>@qprint'选修号课程的平均成绩大于'+convert(varchar(10),@q)+'分'elseprint'选修号课程的平均成绩不大于'+convert(varchar(10),@q)+'分'例3:查询选课表中是否有数学系的学生的选课信息,输出相应的提示信息。ifexists(select*fromscwheresnoin(selectsnofromstudentwheresdept='数学系'))print'有数学系的同学的选课信息'elseprint'没有数学系的同学的选课信息'CASE结构简单CASE表达式CASE条件表达式WHEN表达式值1THEN结果表达式1[WHEN表达式值2THEN结果表达式2[…]][ELSE结果表达式n]END搜索CASE表达式语法格式为:CASEWHEN逻辑表达式1THEN结果表达式1[WHEN逻辑表达式2THEN结果表达式2[…]][ELSE结果表达式n]END显然,简单case中条件表达式需要和when里面的具体值相匹配,而搜索case中通过when里面的逻辑表达式处理需匹配的内容,可以是包含表达式的关系运算返回逻辑值即可,灵活性更高例4:利用搜索case表达式实现:输出课程号、课程名、开课学期,开课学期用“第几学期”。超星互动练习:请尝试使用case语句实现以下效果。函数。(5分钟)介绍常用的函数如:getdate(),convert(),datadiff()游标(20分钟)游标概念(逐行读取数据的需要)游标的使用游标应用示例(重点)例5:使用游标处理学生表中姓陈的同学信息。DECLAREname_curCURSORFORSELECTsnameFROMstudentWHEREsnameLIKE'陈%'ORDERBYsnameOPENname_cur--首先提取第一行数据FETCHNEXTFROMname_curWHILE@@FETCH_STATUS=0--若读取成功BEGINFETCHNEXTFROMname_curENDCLOSEname_curDEALLOCATEname_cur--声明用于存储FETCH返回结果的局部变量DECLARE@var_snochar(5),@var_snamechar(20)DECLAREstu_cursorCURSORFORSELECTsno,snameFROMstudentWHEREsnameLIKE'陈%'ORDERBYsno,snameOPENstu_cursor--首先提取第一行数据,并将结果保存到局部变量中FETCHNEXTFROMstu_cursorINTO@var_sno,@var_snameWHILE@@FETCH_STATUS=0BEGIN--将当前行值连接成一个字符串PRINT'学号:'+@var_sno+',姓名:'+@var_sname--提取下一行数据FETCHNEXTFROMstu_cursorINTO@var_sno,@var_snameENDCLOSEstu_cursorDEALLOCATEstu_cursor例6,例7分别使用带SCROLL选项的游标和修改数据的游标例6:--展示absolute,relative,last的作用declaremycurscrollcursorforselectsno,snamefromstudentorderbysagedescdeclare@ssnochar(5),@ssnamechar(20)openmycurSETNOCOUNTONfetchabsolute1frommycurinto@ssno,@ssnameprint'指定学生的学号是:'+@ssno+',指定学生的姓名是:'+@ssnamefetchlastfrommycurinto@ssno,@ssnameprint'指定学生的学号是:'+@ssno+',指定学生的姓名是:'+@ssnamefetchrelative-1frommycurinto@ssno,@ssnameprint'指定学生的学号是:'+@ssno+',指定学生的姓名是:'+@ssnamefetchrelative-1frommycurinto@ssno,@ssnameprint'指定学生的学号是:'+@ssno+',指定学生的姓名是:'+@ssnameclosemycurdeallocatemycur结果如下:指定学生的学号是:95006,指定学生的姓名是:陈斌斌指定学生的学号是:95013,指定学生的姓名是:陈冬指定学生的学号是:95003,指定学生的姓名是:王敏指定学生的学号是:95005,指定学生的姓名是:陈平例7:--更新由游标指定的数据declaremycurcursorforselect*fromstudent1wheresdept='计算机系'forUPDATEofsageOPENmycurFETCHNEXTFROMmycurWHILE@@FETCH_STATUS=0BEGIN UPDATEstudent1 SETsage=28 WHERECURRENTOFmycur FETCHNEXTFROMmycurENDCLOSEmycurDEALLOCATEmycur3、课程案例。穿插在课程之中,仍然以学生选课数据库的数据读取为例。4、单元小结通过本单元的学习,正确理解和掌握使用SQLServer变量;掌握SQLServer函数的使用;掌握流程控制语句;掌握编写顺序结构、选择结构和循环结构的程序;掌握游标的使用场景和基本使用,并能使用学到的新知识,解决较为复杂的实际问题,进一步巩固查询思维,并在实战中提高sql代码编写能力。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置第六章课后习题

表SEQ表\*ARABIC10第七单元存储过程的应用授课时间202X年X月X日授课周次第10周授课方式(请打√)理论课R讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第七单元存储过程的应用教学目的、要求:理解存储过程的作用;掌握创建、删除、修改和加密存储过程;掌握各类存储过程的执行方法。教学重点及难点:带参数的存储过程的创建和执行。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(10分钟):回顾第6章数据库编程技术基础中,sql中如何定义变量?如何给变量赋值?随机提问形式,了解同学们对上节课程基本内容的掌握情况。完成后,引出本章节内容(3分钟):第6章我们学习了数据库的编程技术基础,这个编程技术基础主要用在第7章和第8章,今天我们学习第7章存储过程,前面我们学习的SQL语句,都是在客户端上执行的,每次要执行相同或类似的功能,都要重新写SQL语句,编写和执行效率偏低,还有一种执行SQL语句的方法,那就是把SQL语句存储在数据库服务器上,并给他取个名字,要执行类似的代码的时候,直接叫他的名字就可以了,存放在服务器上的SQL代码就是存储过程,因为这部分SQL代码存储在服务器上,第一次执行时就编译过了,以后执行基本上不用编译,因而执行速度比较快。2、教学内容与时间安排存储过程概念(15分钟)存储过程的三点功能接受输入参数并以输出参数的形式将一个或多个值返回给调用过程;执行数据库操作(包括调用其它过程)的多句编程语句;向调用过程返回状态值,以表明成功或失败(以及失败原因)。使用存储过程的4点好处模块化程序设计改善数据库性能减少网络流量增加安全机制存储过程的分类2类,1类系统存储过程sp_开头,1类用户自定义存储过程创建和执行存储过程(35分钟)创建存储过程代码CREATEPROC[EDURE]存储过程名[{@参数名数据类型}[=default][OUTPUT]][,...n]ASSQL语句[...n]注意命名,注意参数定义位置,注意再sql语句中使用已经定义的参数执行存储过程[EXEC[UTE]]存储过程名[实参[,OUTPUT][,…n]]注意要在查询窗口的第一行执行,注意参数给出的形式案例教学例1.不带参数的存储过程:查询信息系学生的考试情况,列出学生的姓名、课程名和考试成绩。Createprocc_is_ksAsSelectsname,cname,gradeFromstudentsjoinscons.sno=sc.snojoincoursecono=oWheresdept=’信息系’逐步写出,引导思考例2.带输入参数的存储过程:查询某个指定系学生的考试情况,列出学生的学号、姓名、所在系、课程名和考试成绩。Createprocc_sdept_ks@ssdeptchar(20)AsSelects.sno,sname,sdept,cname,gradeFromstudentsjoinscons.sno=sc.snojoincoursecono=oWheresdept=@ssdept本列依旧老师引导,学生一起思考写出,特别提醒注意参数的定义和使用方式,以及注意如何执行这个带参数的存储过程(2种方式,位置法和参数名法)练习1:创建一个存储过程,proc1,用来输入学生的姓名,查询学生的基本信息。本练习使用超星拍照或者弹幕形式。例3.含多个输入参数并有默认值的存储过程:查询某个学生(姓名)某门课程的考试成绩,若没有指定课程,则默认课程为“数据库”。Createprocc_cno_grade@ssnamechar(20),@ccnamechar(20)=’数据库’AsSelectgradeFromstudentsjoinscons.sno=sc.snojoincoursecono=oWheresname=@ssnameandcname=@ccname本例老师演示讲解,注意速度,引导学生一起思考完成,特别注意默认值的设置和执行效果,执行时进一步明确参数的使用场景,若参数连续给出,可以按位置或者按名称,若参数不连续给出,只能按名称。有默认值的参数不给值的时候自动使用默认值。练习2:创建存储过程,proc2,查询指定系别的指定课程的选课平均成绩,默认查询“数据库”的选课平均成绩。本练习使用超星拍照或者弹幕形式。例4.含多个输入参数并均指定默认值的存储过程:查询指定系、指定性别的学生中年龄大于等于指定年龄的学生详细信息。系的默认值为“计算机系”,性别默认值为“男”,年龄默认值为20。本例,老师引导学生一起思考解决。例7,老师根据时间,可以直接ppt讲解。(有输出参数)练习3:使用输出参数,建立存储过程proc3,输入一个学生的姓名,输出该学生所在系的平均年龄。(注意输出参数的定义和使用)本列给学生一些提示,然后超星弹幕互动。查看\修改\删除存储过程(5分钟)查看存储过程可编程性--存储过程--右键修改修改存储过程ALTERPROC[EDURE]存储过程名[{@参数名数据类型}[=default][OUTPUT]][,...n]ASSQL语句[...n]修改存储过程代价和重新创建差不多。删除存储过程图形化操作在要删除的存储过程上右击鼠标,在弹出菜单中选择“删除”命令。代码实现DROP{PROC|PROCEDURE}{procedure}[,...n]可以一次删除多个存储过程。举例:删除前面创建的部分存储过程系统存储过程和扩展存储过程(5分钟)常用系统存储过程介绍sp_tablessp_stored_proceduressp_renamesp_renamedbsp_helpsp_helptext存储过程的应用(5分钟)例12.将指定课程的学分改为指定值,要求指定值必须在1~10之间,否则不予修改。CREATEPROCp_UpCredit1@cnochar(6),@creditintASIF@creditBETWEEN1AND10UPDATECourseSETCredit=@creditWHERECno=@cno例13.删除指定学生(学号)的成绩不及格的修课记录。CREATEPROCp_DSC@snochar(5)ASDELETEFROMSCWHERESno=@snoANDGrade<60讲解例12,引导学生完成例13,进一步学习参数的定义和使用。3、课程案例。穿插在课程之中,仍然以学生选课数据库中创建各种存储过程为例。4、单元小结通过本单元的学习,了解存储过程的定义和作用,会使用代码创建不带参数的存储过程、带输入参数的存储过程、带输入参数并有默认值的存储过程、带输出参数的存储过程,以及这些存储过程的调用方式,调用存储过程时参数的定义和使用规则等。并能使用学到的新知识,解决实际问题,进一步巩固数据库思维,并在实战中提高数据库系统的操作能力。5、教学方法操作演示、理论讲授、多媒体课件、超星互动6、课后作业布置第7章课后习题

表SEQ表\*ARABIC11第八单元触发器的应用授课时间202X年X月X日授课周次第11周授课方式(请打√)理论课R讨论课□实验课□习题课□其他□课时安排2授课题目(教学章、节或主题):第八单元触发器的应用教学目的、要求:了解触发器的概念和分类;掌握创建、执行、修改和删除触发器的方法;掌握INSERTED表和DELETE表的使用;掌握DDL触发器的创建和使用;掌握触发器的禁用和启动。教学重点及难点:触发器的创建和触发时机(重点);使用触发器实现数据完整性(难点)。教学基本内容和过程(可增加页)1、课堂导入上节知识回顾(10分钟):先简要回顾一下存储过程的创建和执行,然后通过超星拍照互动检验学生对存储过程的掌握情况,互动题如下:创建一个能够向SC表中插入学生学号,课程号,成绩的存储过程。createprocproc_indata@ssnochar(5),@ccnochar(6),@ggradeintasinsertintoscvalues(@ssno,@ccno,@ggrade)执行如下:Execproc_indata‘95003’,’1’,77根据学生答题情况,适当讲解。完成后,引出本章节内容(3分钟):第7章我们学习了存储过程,存储过程的执行,需要我们在查询窗口使用exec存储过程名称,来调用指定的存储过程,也就是说一般的存储过程需要我们喊他,他才做事。但有些时候我们希望某些存储过程能够自动执行,例如,在销售管理过程中产品售出,有了新的销售订单,产品存库存以和已销售量都应该相应的发生改变,而且是自动改变。这时候就要用到一类新的存储过程--触发器。触发器是一类特殊的存储过程,它能够对系统的dml事件做出响应,自动实现一些功能,我们通常用它来实现数据的完整性。2、教学内容与时间安排触发器概述。(5分钟)特殊的存储过程,自动执行,用于维护数据完整性。存储过程的分类DML触发器、DDL触发器超星互动,选择题:触发器是一种特殊类型的存储过程,被捆绑到(A)或视图上。数据表索引数据库函数本题互动目的是抓住学生的注意力。DML触发器的定义和创建(25分钟)什么是DML触发器(针对数据表的插入、更新、删除而引发的触发器)创建触发器的Transact-sql语句CREATETRIGGER触发器名称ON{表名|视图名}{FOR|AFTER|INSTEADOF}{[INSERT][,][DELETE][,][UPDATE]}ASSQL语句注意:for和after同义是后触发(引发触发器的事件发生后执行),insteadof是替代触发器特别提出只在触发器中才有的,inserted和deleted表,以及他们使用的场合。此时,及时通过超星选择题互动,加强学生记忆。通过例子演示讲解如何编写出发器代码,以及如何引发触发器执行例1.限制职工的基本工资必须在相应工作的最低工资和最高工资之间。CREATETriggertri_SaON职工表AFTERINSERT,UPDATEASIFEXISTS(SELECT*FROM职工表aJOIN工作表bONa.工作号=b.工作号WHERE基本工资NOTBETWEEN最低工资AND最高工资)ROLLBACK--撤消已执行的操作本例注意解释说明为什么在触发器里可以撤销刚刚的DML操作--事务机制。例2.限制职工表中“浮动工资”列的取值必须在“基本工资”的0~30%范围内。CREATETriggertri_FsaON职工表forINSERT,UPDATEASIFEXISTS(SELECT*FROMINSERTEDWHERE浮动工资NOTBETWEEN0AND基本工资*0.3)ROLLBACK触发:insertinto职工表(职工号,工作号,基本工资,浮动工资)values('05','01',1000,400)本例使用了触发器特有的inserted表,注意说明此表的作用。例3.限制不能将不及格学生的成绩改为及格,如果违反约束,给出提示信息:“不能将不及格成绩改为及格”。CREATETriggertri_ChagradeONSCforUPDATEASIFEXISTS(SELECT*FROMINSERTEDaJOINDELETEDbONa.Sno=b.SnoANDa.Cno=b.CnoWHEREb.Grade<60ANDa.Grade>=60)BEGINROLLBACKPRINT'不能将不及格成绩改为及格!'END此例,以启发学生思考为主,可以使用伪代码,再逐步用规范代码替代,培养学生思维以及向规范代码转换的能力。同时,进一步加强对2个临时表应用场景的体会。前触发型触发器定义(前触发型触发器与后触发型触发器的区别),超星选择互动--增强记忆例4.用前触发器实现例1限制职工基本工资必须在相应工作的最低工资和最高工资之间。CREATETriggertri_SaON职工表INSTEADOFINSERTASIFNOTEXISTS(SELECT*FROMinsertedaJOIN工作表bONa.工作号=b.工作号WHERE基本工资NOTBETWEEN最低工资AND最高工资)INSERTINTO职工表SELECT*FROMINSERTED可以和截胡类比。DDL触发器的应用场景和创建(15分钟)防止对数据库架构进行某些更改以响应数据库架构中的更改记录数据库架构中的更改或事件创建代码:CREATETRIGGER触发器名ON{ALLSERVER|DATABASE}[WITHENCRYPTION]{FOR|A

温馨提示

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

评论

0/150

提交评论